在OpenGL的glVertexPointer中(当使用VBO时)为什么不将其最后一个参数设置为零?

时间:2011-12-25 03:28:24

标签: opengl vbo

在OpenGL中,当使用VBO时,为什么我经常看到指定的最后一个参数(指向数据的指针)......

glVertexPointer( 3, GL_FLOAT, 0, (char *) NULL ); 

......而不仅仅是这样......

glVertexPointer( 3, GL_FLOAT, 0, 0); 

这可能只是一个首选语法的问题,因为它似乎是双向的。但如果有理由不使用零,为什么会这样呢?

2 个答案:

答案 0 :(得分:2)

  

但如果有理由不使用零,为什么会这样?

缺乏对C编程语言的理解。在C中,空指针是0,底层宏是

#define NULL 0

那里没有类型。

此外,未定义如果将某个数字(不是将指针强制转换为intptr_t的结果)转换为指针会发生什么。实际上你是在欺骗编译器。我在这里解释了详细信息:

https://stackoverflow.com/a/8284829/524368

答案 1 :(得分:0)

只是为了向读者说清楚它是一个指针。

openGL调用有很多参数,通常为零,所以如果连续有3或4个零,它只是让它更清晰一些