相关疑难解决方法(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
查看次数

为什么GLsizei没有定义为无符号?

我一直在寻找了typedefGLsizei对的OpenGL ES 1.1的实现,在iOS上,并惊讶地发现,它被定义为int.一些快速的谷歌搜索显示这是正常的.(包括普通的OpenGL.)

我期待它被定义为unsigned intsize_t.为什么它被定义为香草int

opengl types opengl-es

5
推荐指数
1
解决办法
4986
查看次数

如何将int转换为const GLvoid*?

在我的跨平台OpenGL应用程序中,我想使用顶点缓冲区对象进行绘制.但是我遇到了调用glDrawRangeElements的问题.

glDrawRangeElements(GL_TRIANGLES, start, start + count, count, 
            GL_UNSIGNED_INT,  static_cast<GLvoid *>  (start * sizeof(unsigned int)));
Run Code Online (Sandbox Code Playgroud)

编译器(Mac OS X上的CLang)不喜欢最后一个参数"错误:无法从类型'unsigned long'转换为指针类型'GLvoid*'(又名'void*')".OpenGL API将最后一个参数的类型定义为const GLvoid*,并且当此api与顶点数组一起使用时需要一个指针.但是我知道当使用顶点缓冲区对象而不是指针时,应该将一个表示偏移量的整数值传递给缓冲区数据.这就是我想要做的事情,因此我必须施展.如何协调api要求与编译器进行严格的检查?

opengl vertex-buffer c++11

5
推荐指数
3
解决办法
3023
查看次数