OpenGL
文章平均质量分 72
卓洛王子
卓洛王子又开始找工作了,求C++引擎或相关。
展开
-
opengl编程指南 第七版 源码有bug Page35 lines.c 红宝书
问题1:当我照着源码敲进去的时候发现,运行的结果不对。哪里不对?源码中没有glPushAttrib(GL_LINE_STIPPLE) glPopAttrib()。所以会出现每次更新点画线时在下一次绘制时会以最后一次设置的信息重绘而覆盖掉之前已绘制好的点线。所以要进行状态压栈处理和谈栈处理,这样子在刷帧重绘才不会影响其他帧的绘制结果。(原因是什么目前我也不清楚,估计是状态机的管理问题。要了解内部的绘原创 2014-11-08 01:56:45 · 1594 阅读 · 0 评论 -
OpenGL蓝宝书第七章:立体天空和纹理折射、双纹理(上)
难点在于如何理解3D纹理和顶点的映射。遗留问题,怎么我看到的原纹理是倒置的。在红宝书中提到:为了确定某个特定的片段所使用的纹理(以及纹理单元),当前纹理(s,t,r)首先根据s/t/r中最大绝对值(主轴)以及它的符号(方向),在6个纹理中选择其一。剩余的两个坐标除以坐标的最大值,得到新坐标(s',t'),以查找立方图纹理中那个被选择的纹理对应的纹理单元。立方原创 2015-07-14 01:30:46 · 1051 阅读 · 0 评论 -
OpenGL蓝宝书第五章代码勘误以及惯性坐标系去解释模型变换:Pyramid.cpp
如果你也发现按照教程代码完成贴图时,你会底面的坐标和平常顶点坐标正负相反,比如-1.0f, -1.0f, -1.0f这个顶点对应的却是世界坐标中1.0f,-1.0f,1.0f问题究竟出现在哪里?原来是:objectFrame.GetCameraMatrix(mObjectFrame); //原书中的代码为GetMatrix,获取了objectFrame的朝向,导致顶点和纹理的对象关系出现了原创 2015-07-12 01:05:58 · 1492 阅读 · 1 评论 -
OpenGL蓝宝书第七章:立体天空和纹理折射、双纹理(下)
对比了蓝宝书,才知道红宝书的优点。reflect函数的原理在红宝书中有说明,只有对比了红宝书,才知道红宝书的定位:高级工具书。蓝宝书作为入门级书籍,以较快的速度让读者敲到代码去思考,总遗留了需要探索的内容。蓝宝书要看完。红宝书要看完。C++11 标准版英文版也看了小部分。多线程入门都不算。Socket只能实现基础网络连接,离真正的数据通信都算,何况多人在线对战网原创 2015-07-15 15:13:33 · 1127 阅读 · 0 评论 -
OpenGL一维纹理映射练习
算是抛开书本自己敲了一个完整的渲染代码。用漫射光强度在一维纹理中索引纹理颜色。所以从顶点转配之后传给片段着色器的是漫射光强度值即可。过这章之后可以考虑着手glsl方向。可是导航网格的实现还没搞定,我该如何是好?总之,避免写UI,避免接入无休止的SDK。时至今日,终于明白昔日的老大为何说只在固定的时间发版。因为各种版本的发布耗时耗力缺不能提高技术,能少则免。要么是在行业中制定SD原创 2015-07-13 13:58:11 · 2977 阅读 · 0 评论 -
OpenGL蓝宝书第五章5.4Tunnuel 纹理映射和过滤:较好的可读性代码
主要处理了纹理贴图和顶点映射的关系。根据法线先确认环绕方向。然后根据绘制的primitive_type完成纹理顶点直接的映射。哪里来,哪里回;根据法线来确认逆时针方向。strip的画法要熟悉,从其实的两个顶点开始已折线的形式前进GL_TRIANGLES_STRIP是常用的绘制方式,在循环代码中使用四个顶点+循环控制量能完成大量的几何图形绘制。这里我犯了个错误,没意识到折线的的前进方向问题,导致原创 2015-07-12 16:32:50 · 1115 阅读 · 0 评论 -
OpenGL蓝宝书第六章代码疑虑:为什么使用了GL_TEXTURE_1D??纹理和顶点间的映射是如何实现?
遇到一个大问题,明明加载纹理绑定的是GL_TEXTURE_2DglUniform1i(locCloudTex, 1); //明明默认为0,参数却不是0.可是原书中代码确是glGenTextures(1, &uiTexture);glBindTexture(GL_TEXTURE_1D, uiTexture); // LoadTGATexture("Clouds.tga原创 2015-07-12 22:06:12 · 2145 阅读 · 0 评论 -
shader实现灰阶图
1、cocos主线程以及Auto-batchingAppDelegate app;//封装用于智能分化,完成初始化,载入资源、构造场景、生成精灵Application::getInstance()->run();//启动主线程 director->mainLoop();//分为场景渲染,和清理缓存池 glview->pollEvents(); drawScene:原创 2014-12-22 13:58:49 · 1612 阅读 · 0 评论 -
DrawPrimitive真是一个好类!!cocos的开发组干了好事。
如果每次在商业项目中使用opengl命令去绘制特效,工作效率真心低,所以官方包装了这个接口,真实好东西。draw函数的接口以及改了,新接口不允许重载原先的void draw(void)。命令模式已是过去,显示列表模式则是将命令放入缓冲池中,在opengl状态机执行绘制命令时从中读取才去绘制,不再是每次绘制就调用opengl状态机立即绘制。这就要求引擎全局组织绘制命令,即原创 2014-12-12 17:35:38 · 1175 阅读 · 0 评论 -
2.x终于照着教程,成功使用OpenGL ES 绘制纹理贴图,增加了灰度图
在之前成功绘制变色的几何图形之后,今天利用Openg ES的可编程管线绘制出第一张纹理。学校时候不知道OpenGL的重要性,怕晦涩的语法,没有跟老师学习OpenGL的环境配置,如今只能利用cocos2dx 2.2.3 配置好的环境学习OpenGL ES。源代码来自《cocos2d-x高级开发教程》,注释是本人的。void HelloWorld::draw(){ //opengl世界坐标轴原创 2014-09-28 23:46:05 · 4091 阅读 · 0 评论 -
openGL超级宝典第三章例子——贴花
1、又和上次一样犯了个错误,深度缓冲标识位GL_DEPTH_BUFFER_BIT写成GL_COLOR_BUFFER_BIT。导致图形绘制没有在窗口中出现2、注释是我的。3、好消息:code compare插件和工具的使用。之前朋友推荐我使用,一直没有场景。现在知道:svn同文件的不同版本在同一路径下的对比使用smartSVN;不同文件或者不同路径任何版本对比使用code compare工具原创 2015-01-10 23:03:30 · 1911 阅读 · 0 评论 -
贴贴代码,看懂别人的代码也是一项好技能。
转载:点击打开链接glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)glRotatef(45,1,0,0)物體如何旋转?想象:从 坐标(0,0,0)即原点,引出一条线到(1,0,0),用右手握住这条线,这时,你会问,如何握?右手大拇指指向 (0,0,0)至(1,0,0)的方向 才握。另外四个手指的弯曲指向 即是物体旋原创 2014-11-07 19:24:31 · 777 阅读 · 0 评论 -
超级宝典第三章剔除弃用的例子
1、注释一定是我的,配置当然也是是我的。其他的是蓝宝书的。/ Scissor.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#pragma comment(lib, "freeglut_static.lib")#endif原创 2015-01-10 23:51:06 · 864 阅读 · 0 评论 -
OpenGL GL_EDGE_FLAG、GL_POLYGON_MODE、glPolygonMode组合使用将凹多边形切割成凸多边形绘制
1、虽然很多显卡已经底层支持凹多边形,但是仍然了解凸多边形组合成凹多边形2、先保存原先的边角标志:开始绘制图多边形,因为是由两个凸多边形组合成一个凹多边形,所以第一个凸多边形的最后一条边留缺口,接着的凸多边形的开始边留缺口,这样子就能组合成凹多边形。原理:glEdgeFlag(GL_FALSE);标记从该顶点出发的边为非边界。这样子绘制的时候,从该顶点出发的线段不会绘制,只会绘制到达该顶点的边原创 2014-11-09 17:00:05 · 3177 阅读 · 0 评论 -
手贱的编码错误!!
1、只要是编译器没报错的代码说明编码格式是能识别的。(所以一旦代码可以被编译就不用担心utf-8还是unicode,至于中文问题,要想在代码中VS识别中文debug就切换为utf-8编码格式就可以啦。)2、鉴于有此认识:下面两段代码是有区别的:int main(int argc,char* argv[]){ glutInit(&argc,argv); glutInitDisplayM原创 2014-11-09 15:16:45 · 608 阅读 · 0 评论 -
本人的开发环境备注
windows:1、C盘有个vs2012配置了freeglut2.8(有源码工程)、glew的开发环境。因为原码的生成路径有些混乱,比如我只改了debug的路径,所以目前工程放在c盘的用户文档vs2012下2、D盘有个vs2013。用于C++11、opengl超级宝典的开发环境配置(freeglut2.6、gltools使用源码编译)。原则上只要再把上面的freeglut的源码工程移入D:原创 2015-01-01 21:08:52 · 733 阅读 · 0 评论