gpt4 book ai didi

android - 使用 C++ 在 Android NDK 中使用 OpenGL|ES 画一条线

转载 作者:太空狗 更新时间:2023-10-29 14:15:50 29 4
gpt4 key购买 nike

我想使用 OpenGL|ES 在我的 Android NDK 应用中画一条线。

我正在使用以下代码在屏幕上绘制线条。

GLfloat line[] = { 
0,0,0,
100,100,0
};

GLfloat colors[] = {
1.0f, 0.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
0.0f, 0.0f, 1.0f, 1.0f
};
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glShadeModel(GL_SMOOTH);
glVertexPointer(3, GL_FLOAT, 0, line);
glColorPointer(4, GL_FLOAT, 0, colors);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(GL_LINES, 0, 2);
glFlush();

上面的代码将在屏幕上绘制一条线,但我面临的问题是,如果我更改数组 line 中的坐标,例如

GLfloat line[] = {
0,0,0,
5,5,0
};

然后屏幕上也会绘制相同的线,即线的长度不会发生变化。输出附加: enter image description here

这种异常行为的原因是什么?

最佳答案

在不修改矩阵的情况下,默认的 OpenGL 坐标被归一化(映射到 0-1)。 (0,0) 是屏幕中心,(1,0) 是中心右侧,(0, -1) 是屏幕底部等等。

在您的示例中,(5,5) 和 (100,100) 相对于中心和屏幕外的方向完全相同,因此这就是为什么您在两者中看到相同的线。

关于android - 使用 C++ 在 Android NDK 中使用 OpenGL|ES 画一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22293611/

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