现在的位置: 首页 > 综合 > 正文

手把手教你实现openGL的功能哦

2013年04月25日 ⁄ 综合 ⁄ 共 622字 ⁄ 字号 评论关闭

原文查看

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

opengl

抱歉!评论已关闭.