gpt4 book ai didi

c++ - glDrawArrays 不绘制

转载 作者:行者123 更新时间:2023-11-28 00:45:58 25 4
gpt4 key购买 nike

我使用 vector 来存储顶点和法线数据

vector<float> vertex;
vector<float> normal;

例如:

normal.push_back(-1);
normal.push_back(0);
normal.push_back(0);

vertex.push_back(BARRIER_RADIUS);
vertex.push_back(POLE_HEIGHT);
vertex.push_back(-POLE_RADIUS);

for (int i = POLE_POINTS, i >= 0; i--)
{
//add more vertex
}

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

glVertexPointer(3, GL_FLOAT, 0, &vertex[0]);
glNormalPointer(GL_FLOAT, 0, &normal[0]);

glDrawArrays(GL_TRIANGLE_FAN, 0, vertex.size());

glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
//Add some more + Draw some thing else the same way

我从中得到的是什么。它不会在屏幕上绘制任何东西。

以前的版本是这样的:

glNormal3f(-1, 0, 0);
glBegin(GL_TRIANGLE_FAN);
glVertex3f(BARRIER_RADIUS, POLE_HEIGHT, -POLE_RADIUS);
for ()
{
//add more vertex
glVertex3f(........);
}
glEnd();

//draw more the same way

指出我哪里出错了。

最佳答案

您已将 vertex 定义为 float 的 vector ,但几何顶点由 3 个 float 组成,因此容易造成混淆。顶点数不是 vertex.size(),而是三分之一。我不确定这是否是您唯一的问题,但确实是个问题。

法线的数量应该与顶点的数量相同。

关于c++ - glDrawArrays 不绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227131/

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