我到处寻找 gl*Pointer 函数的确切功能,即 glColorPointer
、glNormalPointer
、glTexCoordPointer
、glVertexPointer
。我发现的任何东西都不足以清楚地描述他们操纵什么 - 我所发现的只是描述他们如何操纵它,这无济于事。
基本上,如果 OpenGL 是一个创建和操作对象的接口(interface),并且每个对象都有多个函数来操作它,那么仅仅一个函数引用是远远不够的。必须有对象的描述。我没能找到。
有人可以准确描述它们的用途吗?
编辑:
嘿,不要把我当成一个完整的 N00B ;-) 抱歉我不清楚 - 当我说对象时,我的意思是抽象 - 非常抽象。事实上,我将任何具有状态和方法的东西都归类为一个对象——因此 gl*Pointer 函数设置一个 glDraw* 函数与之一起工作的状态。我只是好奇状态到底是什么。
编辑:
最佳答案
OpenGL is an interface to create and manipulate objects
你想到了什么样的对象?状态抽象对象或模型等几何对象?如果您想到后者,即场景中的对象,那么您会大吃一惊:OpenGL 不处理这些。
OpenGL 是一种本地状态绘图 API。你指向一些数据缓冲区并批处理一些绘图命令,OpenGL 将根据它所指向的数据执行绘图操作。
Nothing I've found is clear enough to describe what they manipulate - all I've found describes how they manipulate it,
gl…Pointer
函数根本不操作任何东西。当 glDraw…
函数被调用时,它们只是告诉 OpenGL 从哪里获取数据。 glDraw…
触发绘图(从名称上应该清楚),绘制的内容由先前使用 glPointer…
设置的缓冲区区域中的数据决定。
没有网格,没有高阶几何,什么都没有。所有 OpenGL 处理的都是点、线和三角形,它在绘制时从数据缓冲区中一个接一个地绘制这些规范。在 OpenGL 绘制图元后,它不再关心它。
关于c++ - OpenGL gl*Pointer 函数有什么作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732366/