OpenGL gl*Pointer函数是做什么的
what do the OpenGL gl*Pointer functions do
我到处寻找gl*指针函数的确切含义,即glColorPointer
, glNormalPointer
, glTexCoordPointer
, glVertexPointer
。我没有找到足够清楚的东西来描述它们操作了什么——我所发现的都是描述它们如何操作它,这没有帮助。
基本上,如果OpenGL是一个创建和操作对象的接口,并且每个对象都有多个函数来操作它,那么仅仅一个函数引用是远远不够的。必须有对物体的描述。我一直没能找到。
谁能确切地描述一下它们的用途吗?
编辑:嘿,不要把我当成一个完整的N00B;-)对不起,我说得不清楚-当我说对象时,我指的是抽象的-非常抽象的。事实上,我把任何有状态和方法的东西都归类为对象——因此gl*Pointer函数设置了glDraw*函数处理的状态。我只是好奇这个州到底是什么。
编辑:这是我一直在使用的OpenGL函数参考
OpenGL是一个创建和操作对象的接口
你想到了什么样的物体?状态抽象对象还是像模型这样的几何对象?如果你想到后者,即场景中的对象,那么你会感到惊讶:OpenGL不处理这些。
OpenGL是一个本地状态绘制API。你指向一些数据缓冲区并批处理一些绘图命令,OpenGL将根据它所指向的数据执行绘图操作。
我没有找到足够清楚的东西来描述他们操纵什么-我所发现的都是描述他们如何操纵的,
gl…Pointer
函数根本不操作任何东西。当调用glDraw…
函数时,它们只是告诉OpenGL从哪里获取数据。glDraw…
触发绘制(应该从名称中清除),绘制的内容由之前由glPointer…
设置的缓冲区区域中的数据决定。
没有网格,没有高阶几何,什么都没有。所有OpenGL处理的都是点、线和三角形,这些都是它在绘制的时候从数据缓冲区中一个接一个地绘制出来的。在OpenGL绘制了一个原语之后,它就不再关心它了
- 什么时候调用组成单元对象的析构函数
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 什么时候调用析构函数
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 是什么原因导致它无法编译?它是声明签名还是在函数本身的实现中
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 是什么让放置新调用对象的构造函数?
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- 在C 中,对2D数组的增量是什么?函数断言(0)做什么?
- 我应该使用什么函数签名来返回对可能不存在的对象的引用
- 一个类的构造函数,为另一个类进行强制转换.将调用什么函数
- 在 opencv for c 中,什么函数与 Mat::convertTo 和 cvtColor() 完全相同
- 当按下Alt-Enter键时调用什么函数
- C库导出什么函数?
- 使用什么函数来选择文本
- c++在空类中编写和调用什么函数?
- 在共享库的构造函数(_init部分)中,如何知道什么函数被中断了?
- 我可以用什么函数来获取按钮的把手