c++ - OpenGL gl*Pointer 函数有什么作用

标签 c++ function opengl

我到处寻找 gl*Pointer 函数的确切功能,即 glColorPointerglNormalPointerglTexCoordPointerglVertexPointer 。我发现的任何东西都不足以清楚地描述他们操纵什么 - 我所发现的只是描述他们如何操纵,这无济于事。

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

有人可以准确描述它们的用途吗?

编辑:

嘿,不要把我当成一个完整的 N00B ;-) 抱歉我不清楚 - 当我说对象时,我的意思是抽象 - 非常抽象。事实上,我将任何具有状态和方法的东西都归类为一个对象——因此 gl*Pointer 函数设置一个 glDraw* 函数与之一起工作的状态。我只是好奇状态到底是什么。

编辑:

Here's the OpenGL function reference我一直在用。

最佳答案

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/

相关文章:

c++ - 基于可变参数函数参数调用类函数会导致错误

c++ - 为什么我会收到使用 MPI 屏障 [c++] 的 fatal error

C++:为模板参数指定基类

c++ - 如何将 C++ 函数的输入传递给主函数

opengl - 无法在glsl中使用 '%'

c++ - 字符串文字之间的比较

javascript - 传递和分配函数与调用它们

python - 为什么在更改其值时通过函数中的索引访问列表项有效,但迭代器变量方式却不起作用?

c++ - 现代硬件上的 OpenGL 可分离着色器程序和管道性能

c++ - 从带有 GLSL 1.2 的 OpenGL 2.1 切换到带有 GLSL 版本 1.5 的 OpenGL 3.3 会破坏我的代码