OpenGL如何理解,总结两条经验
几年前学习GL的时候,碰了不少钉子,现在发两条自己总结的经验,希望对广大opengl初学者有所帮助。一,关于GL函数的调用
opengl有点类似状态机+面向对象的模式,进行某个功能的调用,需要切换到那个功能的状态,再进行操作。
比如,需要创建一个纹理,第一步需要切换到纹理状态(绑定纹理对象):
glBindTexture GL TEXTURE 2D, 纹理ID
然后再创建并填充纹理:
glTexImage2D ...
不管是纹理,还是缓冲,还是其他opengl对象,在创建和使用前,都需要绑定,使用完毕后尽量取消绑定,而删除前则不需要绑定。
二,关于GPU处理程序(shader)
一开始我不知道它的运行流程,这使学习shader造成了很大障碍。
顶点处理程序,就是对每一个传入的顶点,进行计算。比如一个正方体有8个顶点,就运行8次顶点处理程序
几何处理程序,就是根据顶点程序计算出的结果(顶点列表),进行二次顶点处理。比如可以让模型变形。只有近几年新出的显卡支持几何处理。
像素着色器,就是对当前绘制的物体的每一个最终显示出来的像素进行赋值。比如最终有10000个像素显示出来了,就会运行10000次像素着色器。深度测试没有通过的像素,则不会处理
手机打字不便,见谅!