相关疑难解决方法(0)

NULL + int的结果是什么?

我在OpenGL VBO实现中看到了以下宏:

#define BUFFER_OFFSET(i) ((char *)NULL + (i))
//...
glNormalPointer(GL_FLOAT, 32, BUFFER_OFFSET(x));
Run Code Online (Sandbox Code Playgroud)

你能提供一下这个宏的工作原理吗?可以用功能替换吗?更确切地说,递增NULL指针的结果是什么?

c opengl null pointers pointer-arithmetic

19
推荐指数
2
解决办法
5021
查看次数

glEnableVertexAttribArray提供无效操作

我正在尝试浏览OS X上的ArcSynthesis教程,并在调用glEnableVertexAttribArray后得到OpenGL错误"无效操作".根据glEnableClientState和glEnableVertexAttribArray的讨论,我已经检查过我确实有一个VBO绑定,并且我不确定下一步要检查什么.

我使用的是OS X 10.8,OpenGL 3.2配置文件和Xcode 4.6.

我正在尝试编写一个将加载到教程中使用的XML模型文件中的类,我认为我正在以与绘制编码模型的早期程序相同的顺序执行相同的操作.但我必须以某种方式做一些不同或错误的事情,并且无法弄清楚是什么.参考OpenGL 3.2文档说通过发送超过OpenGL实现允许的最大值的索引值来获得无效操作,但我使用的是0和1,我之前使用过.

这是代码,为清楚起见,编辑了所有OpenGL错误检查:

    glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject);
    for (int iAttribLoop = 0; iAttribLoop < [attributeAnalyzers count]; iAttribLoop++) {
        AttributeAnalyzer *theAnalyzer = [attributeAnalyzers objectAtIndex:iAttribLoop];
        GLuint theIndex = [theAnalyzer index];
        NSLog(@"theIndex is %d", theIndex);
        glEnableVertexAttribArray(theIndex);
        glVertexAttribPointer(theIndex, [theAnalyzer size], theType, GL_FALSE, 0, dataOffset);
        dataOffset += sizeof(theType)*[theAnalyzer size]*[theAnalyzer vertexCount];
    }
Run Code Online (Sandbox Code Playgroud)

opengl cocoa

2
推荐指数
1
解决办法
2425
查看次数

标签 统计

opengl ×2

c ×1

cocoa ×1

null ×1

pointer-arithmetic ×1

pointers ×1