sách gpt4 ăn đã đi

c++ - OpenGL VBO : Drawing a sphere

In lại 作者:太空狗 更新时间:2023-10-29 20:16:07 29 4
mua khóa gpt4 giày nike

我在绘制球体时遇到了一些问题。

std::vector ballVerts;

for(int i = 0; i <= 40; i++)
{
double lat0 = M_PI * (-0.5 + (double) (i - 1) / 40);
double z0 = sin(lat0);
double zr0 = cos(lat0);

double lat1 = M_PI * (-0.5 + (double) i / 40);
double z1 = sin(lat1);
double zr1 = cos(lat1);

for(int j = 0; j <= 40; j++)
{
double lng = 2 * M_PI * (double) (j - 1) / 40;
double x = cos(lng);
double y = sin(lng);

ballVerts.push_back(x * zr0); //X
ballVerts.push_back(y * zr0); //Y
ballVerts.push_back(z0); //Z

ballVerts.push_back(0.0f);
ballVerts.push_back(1.0f);
ballVerts.push_back(0.0f);
ballVerts.push_back(1.0f); //R,G,B,A

ballVerts.push_back(x * zr1); //X
ballVerts.push_back(y * zr1); //Y
ballVerts.push_back(z1); //Z

ballVerts.push_back(0.0f);
ballVerts.push_back(1.0f);
ballVerts.push_back(0.0f);
ballVerts.push_back(1.0f); //R,G,B,A
}
}

glGenBuffers(1, &ballVbo);
glBindBuffer(GL_VERTEX_ARRAY, ballVbo);

GLuint sphereSize = 3200*7*4; //3200 vertixes * 7 floats
glBufferData(GL_VERTEX_ARRAY,sphereSize, &ballVerts, GL_STATIC_DRAW);



/*
Draw a ball
*/
glBindBuffer(GL_VERTEX_ARRAY, ballVbo);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 7*4, 0);
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(4, GL_FLOAT, 7*4, (void*)(3*4));

glDrawArrays(GL_TRIANGLE_STRIP, 0, 3200);

glBindBuffer(GL_ARRAY_BUFFER, 0);

用于生成球体的代码在即时模式下运行良好,但是当我将其放入 VBO 时,我不断从 glDrawArrays 中获取访问冲突异常。有什么建议吗?

câu trả lời hay nhất

glBufferData(GL_VERTEX_ARRAY,sphereSize, &ballVerts, GL_STATIC_DRAW);

ballVerts KHÔNG数组。它是一个 std::vector。获取 std::vector 的地址不会获得 vector 中包含的数组的地址。你需要使用 &ballVerts[0];

关于c++ - OpenGL VBO : Drawing a sphere,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10471601/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress