- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 OpenGL 2.0 管道
的家庭作业中遇到问题。问题是当我尝试设置 glVertexPointer
时出现 GL_INVALID_OPERATION
(错误 1282)。
我在网上找不到太多关于这个错误的信息,但据我了解,这个错误是由于在调用 glVertexPointer
之前没有调用 glEnableClientState(GL_VERTEX_ARRAY)
造成的。
这是我调用这两个函数的代码:
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(4, GL_DOUBLE, sizeof(vert), (void *)0);
我检查了调用 glVertexPointer
之前是否存在错误,并且 glError
返回 0,直到调用此函数之后。似乎错误是由其他原因引起的。还有哪些其他情况可能会导致此问题?
对于一个有点枯燥的问题,我深表歉意;我真的不知道我还能提供什么。如果您需要查看其他代码段,请让我知道我可以提供什么。
最佳答案
gl___Pointer (...)
永远不会生成 GL_INVALID_OPERATION 错误,因为相应的固定功能客户端数组状态未启用。当您进行类似 glDrawElements (...)
的绘制调用时,会使用该状态。在禁用数组指针时指定此指针不是错误。
但是,在以下三种情况下进行顶点指针调用是一个错误(会产生GL_INVALID_OPERATION):
如果您有 3.2+ 核心上下文,要点 2 和 3 都将适用于此特定 API 调用。顶点数组对象实际上是一个额外的上下文,所有顶点缓冲区绑定(bind)、数组指针和绘制调用都是相关的。在 OpenGL 3.2 核心中,如果您没有绑定(bind)顶点数组对象,那么这些函数就没有上下文,您可以将这种情况视为要点 1 的特化。
在一对glBegin(...)
和glEnd(之间调用
调用。在这些情况下,实现可能会也可能不会生成错误,如果它生成错误,它将生成GL_INVALID_OPERATION。这适用于绝大多数 OpenGL API 调用,如果它与在立即模式下指定顶点数据没有任何关系,那么它不属于 glVertexPointer(...)
也是未定义操作...)glBegin (...)
和 glEnd (...)
。
实际的 API 引用页面(即 glVertexPointer (...)
)从未提及我上面概述的三种情况中的任何一种。 GL_INVALID_OPERATION 是像 GL_OUT_OF_MEMORY 这样的错误之一,它具有隐含的含义,可以由一整类 API 调用生成,而手册页中从未提及。您应该熟悉最常见的 GL_INVALID_OPERATION 原因。
关于c++ - glVertexPointer 报告的 GL_INVALID_OPERATION 即使调用了 glEnableClientState(GL_VERTEX_ARRAY),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19801369/
这只是出于兴趣,但是 GL_VERTEX_ARRAY 将“保持”并通过 drawArrays() 之类的东西渲染的顶点数量是否有限制?或者理论上我可以通过几百万个顶点并且仍然能够调用 drawArra
我在使用 OpenGL 2.0 管道 的家庭作业中遇到问题。问题是当我尝试设置 glVertexPointer 时出现 GL_INVALID_OPERATION(错误 1282)。 我在网上找不到太多
我是一名优秀的程序员,十分优秀!