【发布时间】:2011-02-12 04:18:41
【问题描述】:
我编写了一个应用程序,它在 Android NDK 中绘制 openGL es 1.0 并在 Android 手机上呈现它。到目前为止,我可以画两条线。问题是那两条线是彩虹。我试图调试屏幕上的坐标位置(0,0 和 1,1 的位置),所以我为我正在绘制的两条线添加了颜色。一个应该用红色绘制,另一个用绿色绘制。我用来绘制它们的代码如下:
void appInit()
{
glEnable(GL_CULL_FACE);
}
void appRender(jint width, jint height)
{
prepareFrame(width, height);
drawLines();
}
void drawLines()
{
glLoadIdentity();
glPushMatrix();
GLfloat color1[] = {0.0f,1.0f,0.0f,1.0f};
drawLine( 1.0f,1.0f,2.0f,2.0f,color1);
glPopMatrix();
glPushMatrix();
GLfloat color2[] = {1.0f,0.0f,0.0f,1.0f};
drawLine(0.0f,0.0f,1.0f,1.0f, color2);
glPopMatrix();
}
void drawLine(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2, GLfloat * color)
{
GLfloat vVertices[] =
{x1, y1,
x2, y2};
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
//glColor4f(color[0],color[1],color[2],color[3]);
glColorPointer(4,GL_FLOAT,0,color);
glVertexPointer(2, GL_FLOAT, 0, vVertices);
glDrawArrays(GL_LINES, 0, 4);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
}
void prepareFrame(int width, int height)
{
glViewport(0, 0, width, height);
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glLoadIdentity();
}
appInit 被调用,然后 appRender 被一遍又一遍地调用屏幕尺寸。结果是这样的:
http://i.stack.imgur.com/G91oX.png
如果有人知道他们为什么要画彩虹而不是我指定的颜色,那就太好了。如果您能告诉我默认情况下 android 上的坐标系是什么样的(不使用 gluperspective 或 lookat),则可以加分。
【问题讨论】:
标签: android opengl-es android-ndk