gpt4 book ai didi

objective-c - 在 OpenGLES 中使用三角形扇形绘制多边形

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

我想用三角形扇形绘制多边形。我将多边形作为数据结构获取,其中包含边数计数和坐标数组。我发现它应该像这样工作:

-(void) fillarea:(int16_t) count vertices:(int16_t*) pxyarray { 
int valueCount = count*2;
GLfloat vertexBuffer[valueCount];
for (int i=0; i<valueCount; i++) {
vertexBuffer[i] = pxyarray[i];
}
glVertexPointer(2, GL_FLOAT, 0, vertexBuffer);
glDrawArrays(GL_TRIANGLE_FAN, 0, valueCount);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
}

它似乎非常适合三角形,但是一旦我使用具有更多边的多边形(正方形、五边形...),它们都会在 0,0 的原点处绘制另一个三角形。谁能给我解释一下这里发生了什么。

如果它有助于我定义为使用此方法绘制的多边形的一些示例:

int16_t verticesTriangle[6] = {50,50,100,50,100,100};
[self fillarea:3 vertices:verticesTriangle];
int16_t verticesSquare[8] = {100,100,150,100,150,150,100,150};
[self fillarea:4 vertices:verticesSquare];
int16_t vertices5[10] = {150,50,175,25,200,50,200,100,150,100};
[self fillarea:5 vertices:vertices5];
int16_t vertices6[12] = {250,50,275,25,300,50,300,75,275,100,250,75};
[self fillarea:6 vertices:vertices6];

最佳答案

问题的答案其实很简单。 glDrawArrays 想要知道顶点的数量而不是传递给它的值的数量。所以不要写:

glDrawArrays(GL_TRIANGLE_FAN, 0, valueCount); // valueCount = 6 for a triangle

我需要写:

glDrawArrays(GL_TRIANGLE_FAN, 0, count); // count = 3 for a triangle

关于objective-c - 在 OpenGLES 中使用三角形扇形绘制多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7451189/

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