OpenGL超级宝典第5版&&GLSL法线变换】的更多相关文章

在GLSL中,有一些情况需要把局部坐标系下的向量或点转换到视点坐标系下,如光照计算时,需要把法向转化到视点坐标系.如果是模型上一点p 转化到视点坐标系下,直接(model-view matrix )*p即可,但法线是向量,不是一个点,不能这样做.我们需要用法线矩阵来转换法线. 法线矩阵: 法线矩阵通常是模型视点矩阵(model-view matrix)左上角3x3矩阵的逆转置矩阵(inverse transpose). 但如果我们的model-view 矩阵不包含任何非一致缩放(non-unif…
1.OpenGL查询拓展机制是否被支持 gltools函数库: int gltIsExtSupported(const char *extension) { #ifndef OPENGL_ES GLint nNumExtensions; glGetIntegerv(GL_NUM_EXTENSIONS, &nNumExtensions); for(GLint i = 0; i < nNumExtensions; i++) if(strcmp(extension, (const char *)g…
缓冲区有很多用途:可以保存顶点数据,像素数据,纹理数据,着色器处理的输入,不同着色器阶段的输出. 缓冲区保存在GPU内存中,提供高速有效的访问.   像素缓冲区对象: GLuint pixBufferObjs[1]; glGenBuffers(1,pixBuffObjs); glBindBuffer(GL_PIXEL_PACK_BUFFER,pixBuffObjs[0]); glBufferData(GL_PIXEL_PACK_BUFFER,pixelDataSize,pixelData,GL_…
翻译:https://www.opengl.org/sdk/docs/man3/xhtml/glProvokingVertex.xml 方法原型:void glProvokingVertex(GLenum provokeMode) 作用:指定哪个点的数据作为平面着色的数据源 参数:GL_FIRST_VERTEX_CONVENTION(图元的第一个顶点)和GL_LAST_VERTEX_CONVENTION(图元的最后一个顶点) 解释:对一个顶点着色器的动态输出进行平面着色(Flat shading…
参考:http://www.zyh1690.org/build-opengl-super-bible-fifth-edition-development-environment/ 环境搭建的测试环境为:VS2010+Windows7 32位 第一步:下载文件 所需文件下载地址:http://yunpan.cn/cAI56sdhc8iIF(提取码:8152) 文件如下: 第二步:库准备 (1)freeglut 1)打开 ~\freeglut-2.8.1\VisualStudio\2010\free…
事先声明:该教程仅适用于VS2010环境下超级宝典第五版的配置 第一步:下载示例代码和环境包: 链接:https://pan.baidu.com/s/1llRRQ8ymBgMGuXp5M50pJw 提取码:7ujk 第二步:新建VS2010空工程一个 第三步:环境配置 在左侧边栏选择右键 源文件 -> 添加 -> 新建筛选器, 命名为 GLTools.再在GLTools上右键 添加->现有项 ,将 Env包 中的 src/GLTools/src 下的文件都添加进去. 在工程名上右击,选择…
做三维重建需要用到OpenGL,开始看<OpenGL超级宝典>,新手第一步配置环境就折腾了一天,记录下环境的配置过程. <超级宝典>中的例子使用了GLEW,freeglut以及GLTools这三个库. 1.GLEW The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library. GLEW provides efficient r…
看<OpenGL超级宝典(第四版)>的4.5.2节时遇到了一系列问题,经过不懈努力终于解决,现将过程记录在下,以便查找追思. 在第4.5.2节之前,自己写的的代码都没有使用作者的gltools.h文件,而是直接使用的glut.h文件,且从未出现过问题. 看到4.5.2节时,本来想先看看运行效果,于是复制运行了作者的代码,结果遇到了问题: 11>LINK : fatal error LNK1104: 无法打开文件“freeglut.lib” 解决方法: (1)下载freeglut-2.8.…
自从工作后,总是或多或少的会接触到客户端3d图形渲染,正好自己对于3d图形的渲染也很感兴趣,所以最近打算从学习OpenGL的图形API出发,进而了解3d图形的渲染技术.到网上查了一些资料,OpenGL的入门学习通常是用<OpenGL开发指南>和<OpenGL超级宝典>这两本书.博主最近在看<OpenGL超级宝典>,在这里分享一些自己的理解,希望和园子里的人一起学习和探讨. 1. 创建工程 <OpenGL超级宝典>的作者为了避免每个例子都重复写一些窗口创建,捕…
看OpenGL超级宝典的时候,遇到一个函数 “gltDrawTorus”,在TRANSFORM和SPHEREWORLD中都有用到.但是一开始在自己写示例代码里时却没法使用,而在作者的代码目录结构下却可以使用.由于作者说SPHEREWORLD这个例子还要用,我就狠下心来研究了一个简单的解决方案,顺便把过程记录下来,以便追思. 在不使用作者的frame类的时候,我都是直接调用glut.h,所以刚开始编译时遇到了: 1error C3861: “gltDrawTorus”: 找不到标识符 解决方法:尝…