OpenGL gl*Pointer函数是做什么的

what do the OpenGL gl*Pointer functions do

本文关键字:什么 函数 gl Pointer OpenGL      更新时间:2023-10-16

我到处寻找gl*指针函数的确切含义,即glColorPointer, glNormalPointer, glTexCoordPointer, glVertexPointer。我没有找到足够清楚的东西来描述它们操作了什么——我所发现的都是描述它们如何操作,这没有帮助。

基本上,如果OpenGL是一个创建和操作对象的接口,并且每个对象都有多个函数来操作它,那么仅仅一个函数引用是远远不够的。必须有对物体的描述。我一直没能找到。

谁能确切地描述一下它们的用途吗?

编辑:

嘿,不要把我当成一个完整的N00B;-)对不起,我说得不清楚-当我说对象时,我指的是抽象的-非常抽象的。事实上,我把任何有状态和方法的东西都归类为对象——因此gl*Pointer函数设置了glDraw*函数处理的状态。我只是好奇这个州到底是什么。

编辑:

这是我一直在使用的OpenGL函数参考

OpenGL是一个创建和操作对象的接口

你想到了什么样的物体?状态抽象对象还是像模型这样的几何对象?如果你想到后者,即场景中的对象,那么你会感到惊讶:OpenGL不处理这些。

OpenGL是一个本地状态绘制API。你指向一些数据缓冲区并批处理一些绘图命令,OpenGL将根据它所指向的数据执行绘图操作。

我没有找到足够清楚的东西来描述他们操纵什么-我所发现的都是描述他们如何操纵的,

gl…Pointer函数根本不操作任何东西。当调用glDraw…函数时,它们只是告诉OpenGL从哪里获取数据。glDraw…触发绘制(应该从名称中清除),绘制的内容由之前由glPointer…设置的缓冲区区域中的数据决定。

没有网格,没有高阶几何,什么都没有。所有OpenGL处理的都是点、线和三角形,这些都是它在绘制的时候从数据缓冲区中一个接一个地绘制出来的。在OpenGL绘制了一个原语之后,它就不再关心它了