gpt4 book ai didi

iphone - glVertexPointer - 绘制不需要的线条

转载 作者:行者123 更新时间:2023-11-28 20:46:24 25 4
gpt4 key购买 nike

我正在为 iOS 使用 OPENGL ES,但是这可能适用于任何 OPENGL 场景;我有一个顶点数组,但只想绘制其中的一些。在下面的示例中,我想从第一个点到第二个点画一条线,然后是第 4 个点到第 5 个点。但是,绘制了“中间”的第三点,而不是第五点。我很确定我遗漏了一些明显的东西,我会很感激朝着正确的方向轻推,谢谢!

        float xy[] = {
10.0f, 10.0f,
110.0f, 10.0f,
210.0f, 210.0f,
310.0f, 210.0f,
110.0f, 120.0f,
210.0f, 310.0f
};

glClearColor(0.2f, 0.5f, 0.4f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);

for(int i = 0; i < 2; i++) {

glEnableClientState(GL_VERTEX_ARRAY);
int from = (i * 6);

glVertexPointer(2, GL_FLOAT, 0, &xy[0]);
glDrawArrays(GL_LINE_STRIP, from, 4 );
glDisableClientState(GL_VERTEX_ARRAY);

};

最佳答案

在您的代码中,您只需在每次迭代中绘制 2 个顶点,而不是 4 个。glDrawArrays 的最后一个参数是顶点数,而不是组件( float )数。

此外,您无需循环即可获得相同的结果,并且工作量/代码/时间要少得多:创建一个索引数组,其中包含您要绘制的顶点的索引,然后使用 glDrawElements 而不是 glDrawArrays。

float xy[] = { ... };
int indices[] = { 0, 1, 3, 4 };

glClearColor(...);
glClear(...);
glVertexPointer(...);
glEnableClientState(...);
glDrawElements(GL_LINES, 4, GL_UNSIGNED_INT, indices);

关于iphone - glVertexPointer - 绘制不需要的线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5991931/

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