如何在3D地球表面绘制三角形

时间:2013-12-23 10:47:40

标签: android opengl-es 3d drawing

我完成了3D地球。现在我想在地球上绘制一个三角形?但是我没能完成它,你能给我一些线索或代码来完成它吗?以下是在球体代码中绘制的部分。我可以在屏幕上绘制三角形,但我不知道如何在3D地球表面绘制三角形或点以在地球上渲染纬度和经度数据。

public void draw(GL10 gl) 
{  
    float vertexArray[] = {
        SphereCoordinate(lat1, long1, 2).x,SphereCoordinate(lat1, long1, 2).y,SphereCoordinate(lat1, long1, 2).z,0.0f,
        SphereCoordinate(lat2, long2, 2).x,SphereCoordinate(lat2, long2, 2).y,SphereCoordinate(lat2, long2, 2).z,0.0f,
        SphereCoordinate(lat3, long3, 2).x,SphereCoordinate(lat3, long3, 2).y,SphereCoordinate(lat3, long3, 2).z,0.0f,
};
    gl.glMatrixMode(GL10.GL_MODELVIEW);     
    gl.glEnable(GL10.GL_CULL_FACE); 
    gl.glCullFace(GL10.GL_BACK);    
    gl.glEnable(GL10.GL_LIGHTING);
    gl.glEnable(GL10.GL_BLEND);

    gl.glFrontFace(GL10.GL_CCW);

    gl.glEnable(GL10.GL_TEXTURE_2D);
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, makeFloatBuffer(vertexArray));
    gl.glColor4f(.0f, 1.0f, 0.0f, 1);
    gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3); // I want to draw the triangle on earth.
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);   
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, m_VertexData);          

    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    gl.glClientActiveTexture(GL10.GL_TEXTURE0);                                 
    gl.glBindTexture(GL10.GL_TEXTURE_2D, m_Texture0);
    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, m_TextureData);         
    gl.glClientActiveTexture(GL10.GL_TEXTURE1);
    gl.glTexCoordPointer(2, GL10.GL_FLOAT,0,m_TextureData);
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
    gl.glEnableClientState(GL10.GL_NORMAL_ARRAY);
    gl.glNormalPointer(GL10.GL_FLOAT, 0, m_NormalData);  
    gl.glColorPointer(4, GL10.GL_UNSIGNED_BYTE, 0, m_ColorData);    
    multiTextureBumpMap(gl, m_Texture0, m_Texture1);
    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, (m_Slices+1)*2*(m_Stacks-1)+2);  
}

在开始时,SphereCoordinate(lat1,long1,2(r)),r是1,它与球体的半径相等,但是无法查看三角形。然后我将r设为2.然后运行,最后一个插槽是下图:

实际上,我想在地球表面绘制三角形。

0 个答案:

没有答案