glClearColor(1.0f,1.0f,1.0f,1.0f);   //将背景清为白色,只有这一句起作用了
log_info("glClearColor",glGetError());  glClear(GL_COLOR_BUFFER_BIT);
log_info("glClear",glGetError());

glColor4f(0.0f,0.0f,1.0f,1.0f);
log_info("glColor4f",glGetError()); glViewport(0,0,engine->width,engine->height);
log_info("glViewport",glGetError());   GLfloat v[6]={10,10,0,100,100,0};
 
glLineWidth(2.0);
log_info("glLineWidth",glGetError()); glVertexPointer(3,GL_FLOAT,0,v);
log_info("glVertexPointer",glGetError()); glDrawArrays(GL_LINES,0,2); 
log_info("glDrawArrays",glGetError());
//glDrawElements(GL_LINES,2,GL_FLOAT,v);
 
      //glFlush();
    
    eglSwapBuffers(engine->display, engine->surface);
log_info("eglSwapBuffers",glGetError());///////////////
log_info是记录日志的,通过日志,所有函数都返回GL_NO_ERROR,但为什么只有第一句填充背景起作用了呢。程序本意在白色背景上画一条蓝色,宽度为2的线段。但是平面上只有白色 没看到线。这是为什么呢?求帮助。

解决方案 »

  1.   

    Java的代码应该先把坐标往屏幕里面移动一些,否则和视角在一个平面上就看不到了,就好像把纸贴在眼睛上,纸上的东西你也看不清。c的应该类似,供参考
    gl.glTranslatef(0.0f, 0.0f, -10.0f);
      

  2.   

    非常感想你的参考
    现在代码改为:
    glClearColor(1.0f,1.0f,1.0f,1.0f);
    glClear(GL_COLOR_BUFFER_BIT);

    glColor4f(0.0f,0.0f,1.0f,1.0f);
    //glViewport(0,0,engine->width,engine->height);
    GLfloat v[6]={10,10,0,100,100,0}; 
    glLineWidth(2.0);
    glVertexPointer(3,GL_FLOAT,0,v);
    glDrawArrays(GL_LINES,0,2); 
    glTranslatef(0,0,-10.0f);
    eglSwapBuffers(engine->display, engine->surface);
    但仍然没有看到画出的结果,只有屏幕被刷白了。这那里有问题呢?请指点