gpt4 book ai didi

c++ - OpenGL 顶点缓冲对象不起作用

转载 作者:行者123 更新时间:2023-11-28 06:02:55 25 4
gpt4 key购买 nike

我遇到了顶点缓冲区对象的问题,它似乎无法正常工作。它不会在屏幕上显示任何内容。

这是我的代码:

void gl::glRecti(int x,int y,int w,int h,glColor *color)
{
GLuint vbo = 0;

GLfloat verts[] =
{
x,y,
x,y + h,
x + w,y + h,
x + w,y,
};

glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

glEnableClientState(GL_VERTEX_ARRAY);

glBindBuffer(GL_ARRAY_BUFFER,vbo);
glVertexPointer( 4 , GL_FLOAT , sizeof(float) * 8, NULL );
glDrawArrays(GL_QUADS,0,4);
glBindBuffer(GL_ARRAY_BUFFER, 0);


glDisableClientState(GL_VERTEX_ARRAY);

}

PS:我是 OpenGL 编程的新手。任何帮助将不胜感激。

最佳答案

你的顶点指针没有意义:

glVertexPointer( 4 , GL_FLOAT , sizeof(float) * 8, NULL );

您告诉 GL 每个顶点位置都指定为 4 维 vector ,并且两个连续顶点之间的偏移量为 8 个 float 。

您提供的是二维位置的紧缩数组,因此您应该使用 2 作为 size 参数,并使用 2*sizeof(float) 作为stride(或 0,这是 thigly packed 数组的快捷方式)。

关于c++ - OpenGL 顶点缓冲对象不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32928669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com