【发布时间】:2014-03-10 06:40:01
【问题描述】:
我想使用 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
};
然后在屏幕上也将绘制相同的线条,即线条的长度不会发生变化。附加输出:
这种异常行为的原因是什么?
【问题讨论】:
-
这不是同一行,当您将 x 和 y 更改为 5 时,您只是看不到它的剩余部分。尝试低于 1 的值,看看它是否有任何变化。具有不同斜率的值也应该有所帮助。
-
好的。我也想知道在opengl|es的情况下do坐标
0,0,0代表屏幕的中心。 -
取决于您的视口和相机设置。但是默认的视口坐标从-1到1,右上角是(1,1),左下角是(-1,-1)。所以是的,默认情况下 (0,0) 是屏幕的中心。请注意,虽然坐标相同,但屏幕宽度和高度是不同的。
标签: android c++ opengl-es android-ndk