我对使用以下方法生成/创建顶点数组对象(VAO)的观点感到困惑:
glGenVertexArrays(GLsizei n, GLuint *arrays);
Run Code Online (Sandbox Code Playgroud)
和
glBindVertexArray(GLuint);
Run Code Online (Sandbox Code Playgroud)
因为我仍然可以创建一个缓冲区对象,说了顶点,并描述了该缓冲区对象glVertexAttribPointer
,并glEnableVertexAttribArray
没有创造过一个VAO.
我的问题是,如果您不必实际创建VAO来描述缓冲区对象中的数据,那么为什么OpenGL SuperBible 5ed这样的源包含在创建VBO时创建VAO的调用?它们仅用于我尚未发现的更高级的主题,我完全糊涂了吗?
此外,我在VBO上阅读wikipedias条目时首次遇到这个问题,他们的示例代码不包含任何调用,glGenVertexArrays()
但他们仍然用数据描述数据glVertexAttribPointer()
.Wiki VBO条目 -
出于什么原因创建VAO的示例?
我最近在OpenCV c ++中使用了一些跟踪基于颜色的对象的代码,并在python绑定中重写了它.
整体结果和方法显然是相同的减去语法.但是,当我在视频的每一帧上执行以下代码时,需要将近2-3秒才能完成,因为c ++变体(也在下面)是即时比较的,我可以在帧之间迭代,就像我的手指可以按下一样快键.
有什么想法或意见吗?
cv.PyrDown(img, dsimg)
for i in range( 0, dsimg.height ):
for j in range( 0, dsimg.width):
if dsimg[i,j][1] > ( _RED_DIFF + dsimg[i,j][2] ) and dsimg[i,j][1] > ( _BLU_DIFF + dsimg[i,j][0] ):
res[i,j] = 255
else:
res[i,j] = 0
Run Code Online (Sandbox Code Playgroud)
for( int i =0; i < (height); i++ )
{
for( int j = 0; j < (width); j++ )
{
if( ( (data[i * step + j * channels + 1]) > (RED_DIFF …
Run Code Online (Sandbox Code Playgroud) 我试图在OpenCV中对图像执行过零边缘检测.我模糊并使用cvLaplace()然后从(0,max)缩放它.我的问题是:如何以正确识别负值的方式访问该图像中的像素值?使用OpenCV(cvPtr2D)提供的函数返回无符号字符.有什么想法或意见吗?
谢谢