原文查看
http://www.ibaiyang.org/2012/12/27/a-opengl-like-implementatio/
学过openGL人知道,openGL状态机的设计着实令人印象深刻。每一种状态都会一直持续影响后面物体的绘制,直到改变此状态。
openGL中维护了二套矩阵,模式视图矩阵,投影矩阵,这二套矩阵完成了所有的从三维到二维的几何变化,包括旋转,缩放,平移和投影。同时openGL还维护了二个栈,一个存储模式视图矩阵,一个存储投影矩阵。
千万不要小看这个栈的设计,我们可以举一个例子。
draw_object(1)
rotate(1)
translate(1)
push_matrix()
draw_object(2)
rotate(2)
translate(2)
pop_matrix()
draw_object(3)
其中rotate(2), translate(2)是不会影响draw_object(3)函数的,因为前面push_matrix将当前的压入栈中,当draw_object(2)后,pop_matrix()又恢复了之前的状态,故在draw_object(3)时,就恢复到了rotate(1),translate(1)的状态了。
我抽空用python和pyqt基本实现openGL的三维变化功能和二个栈的模拟。
代码放在我的github中。
https://github.com/baiyang/valleygl
以下是该代码的运行效果
分享到:
相关推荐
OpenGL_ES入门教程,OpenGL ES是针对手机、PDA和游戏主机等嵌入式设备制定的编程接口,是由OpenGL的不同版本演化而来,目前已有OpenGL ES1.x和OpenGL ES2.0,OpenGL ES2.0添加了对可编程管线的支持.OpenGL ES1.X又有...
由英文作者waZim撰写,经过Sleepy翻译后,以文档的方式显示,手把手教你一步一步实现COLLADA骨骼动画。
OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程OpenGL教程
用C++实现基于openGL的画图板,实现简单画图功能
NEHE的OPENGL教程 第42课 多视窗口… NEHE的OPENGL教程 第42课 多视窗口… NeHe的OPENGL中文教程:第41课 体… NeHe的OPENGL中文教程:第40课 绳… NeHe的OPENGL中文教程:第39课 物… NeHe的OPENGL中文教程:...
opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型...
Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl...
Qt中实现openGL的一些基本功能 VC++代码
VC实现OpenGL三维绘图
VC++编程实现OpenGL虚拟现实 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CVRDemoDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame ...
Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,Android开发之OpenGL ES教程,...
OpenGL入门教程,基础教程,快速入门,加深理解3D
openGL教程+Qt实现教程
这是个opengl的开发教程,它会手把手教你如何构建opengl应用程序的。
用C++代码实现OPENGL缩放和平移功能
opengl功能和设计教程 主要讲述opengl的函数功能和信息
qt实现opengl渲染画面,简单实现,适合初学者参考
openGL教程之—— OpenGL 编程指南(含源码)
qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl...
openGL阴影实现 使用glew,glfw openGL贴图纹理