资源简介
基于opengl实现鱼眼矫正,用到了球面等距模型,w,s,left,right等键可以控制视角,要引入lens K,D参数,留言继续讨论
代码片段和文件信息
/*
OpenGL loader generated by glad 0.1.18a0 on Wed Feb 28 04:14:42 2018.
Language/Generator: C/C++
Specification: gl
APIs: gl=3.3
Profile: core
Extensions:
Loader: True
Local files: False
Omit khrplatform: False
Commandline:
--profile=“core“ --api=“gl=3.3“ --generator=“c“ --spec=“gl“ --extensions=““
Online:
http://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.3
*/
#include
#include
#include
#include
static void* get_proc(const char *namez);
#ifdef _WIN32
#include
static HMODULE libGL;
typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*);
static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;
static
int open_gl(void) {
libGL = LoadLibraryW(L“opengl32.dll“);
if(libGL != NULL) {
gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE)GetProcAddress(
libGL “wglGetProcAddress“);
return gladGetProcAddressPtr != NULL;
}
return 0;
}
static
void close_gl(void) {
if(libGL != NULL) {
FreeLibrary((HMODULE) libGL);
libGL = NULL;
}
}
#else
#include
static void* libGL;
#ifndef __APPLE__
typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*);
static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;
#endif
static
int open_gl(void) {
#ifdef __APPLE__
static const char *NAMES[] = {
“../frameworks/OpenGL.framework/OpenGL“
“/Library/frameworks/OpenGL.framework/OpenGL“
“/System/Library/frameworks/OpenGL.framework/OpenGL“
“/System/Library/frameworks/OpenGL.framework/Versions/Current/OpenGL“
};
#else
static const char *NAMES[] = {“libGL.so.1“ “libGL.so“};
#endif
unsigned int index = 0;
for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) {
libGL = dlopen(NAMES[index] RTLD_NOW | RTLD_GLOBAL);
if(libGL != NULL) {
#ifdef __APPLE__
return 1;
#else
gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL
“glXGetProcAddressARB“);
return gladGetProcAddressPtr != NULL;
#endif
}
}
return 0;
}
static
void close_gl(void) {
if(libGL != NULL) {
dlclose(libGL);
libGL = NULL;
}
}
#endif
static
void* get_proc(const char *namez) {
void* result = NULL;
if(libGL == NULL) return NULL;
#ifndef __APPLE__
if(gladGetProcAddressPtr != NULL) {
result = gladGetProcAddressPtr(namez);
}
#endif
if(result == NULL) {
#ifdef _WIN32
result = (void*)GetProcAddress((HMODULE) libGL namez);
#else
result = dlsym(libGL namez);
#endif
}
return result;
}
int gladLoadGL(void) {
int status = 0;
if(open_gl()) {
status = gladLoadGLLoader(&get_proc);
close_gl();
}
return status;
}
struct gladGLversionStruct GLVersion;
#if defined(GL_E
- 上一篇:语音识别算法
- 下一篇:sacd解码源代码字数补丁
相关资源
- OpenGL 立体房子模拟
- OpenGL 电梯仿真模型
- opengl地形、雨雪、火箭模拟.rar
- OPENGL API及扩展大全
- opengl 编写的cs 游戏
- OPENGL 作品 花儿
- Nate Robin的OpenGL教程(OpenGL编程指南中
- openGL 光照机器人
- OpenGL44PipelineMap.pdf
- 教室漫游 OpenGL
- OpenGL库(包括glewfreeglut和gltools)
- openGl 飞机模拟
- opengl绘制三维模型可用鼠标控制旋转
- opengl三维场景
- 计算机图形学opengl+shader几个
- opengl简单地形绘制
- OPENGL三维场景搭建、漫游、交互_vs2
- 基于体渲染的OpenGL烟雾模拟程序
- openGL下雨现象模拟
- OpenGL三维图形程序设计(Windows版)
- OpenGL实现鼠标旋转缩放平移操作
- Instagram Filters 破解了Instagram App的几十
- opengl 3d obj模型加载,贴图
- 实时计算机图形学 第二版英文版pdf格
- OpenGL实践三:水面涟漪的逼真绘制毕
- Opengl实现的Ray Casting 光线投射算法
- 天空盒(opengl)
- opengl图形学实验七 不同的光照渲染
- OpenGL-Nehe完整中文教程和全部源代码
- 扫描线填充算法的OpenGL实现
评论
共有 条评论