2013-07-16 66 views
0

我正在繪製3D對象,但繪製不正確。原始的3D文件沒有對角線,但是當我繪製時,它顯示對角線。請幫助我爲什麼繪製對角線。對象在openGl中不能正確繪製Es

請參閱此鏈接:http://i.stack.imgur.com/Q4plC.png

代碼

public void draw(GL10 gl) { 
    //gl.glColor4f(0.0f, 1.0f, 0.0f, 0.5f); 
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 

    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer); 
    gl.glDrawArrays(3, 0, v.size()/3); 
    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); 
    gl.glDisable(GL10.GL_CULL_FACE); 
} 

public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
    model.loadGLTexture(gl, context); 
    gl.glEnable(GL10.GL_TEXTURE_2D); 
    gl.glClearColor(1.0f, 0.0f, 1.0f, 1.0f);  
    gl.glClearDepthf(1.0f); 
    gl.glEnable(GL10.GL_DEPTH_TEST);    
    gl.glDepthFunc(GL10.GL_LEQUAL);   
    gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); 
    gl.glShadeModel(GL10.GL_SMOOTH);    
} 

/** 
* Here we do our drawing 
*/ 
public void onDrawFrame(GL10 gl) { 
    //Clear Screen And Depth Buffer 
    gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);  
    gl.glLoadIdentity();    
    gl.glTranslatef(0.0f, 0.0f, 0); //Move down 1.2 Unit And Into The Screen 6.0 
    gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f); //X 
    gl.glRotatef(yrot, 0.0f, 1.0f, 0.0f); //Y 
    model.draw(gl);      //Draw the square 

    xrot += xspeed; 
    yrot += yspeed; 

} 

/** 
* If the surface changes, reset the view 
*/ 
public void onSurfaceChanged(GL10 gl, int width, int height) { 
    if(height == 0) {      //Prevent A Divide By Zero By 
     height = 1;       //Making Height Equal One 
    } 

    gl.glViewport(0, 0, width, height);  //Reset The Current Viewport 
    gl.glMatrixMode(GL10.GL_PROJECTION); //Select The Projection Matrix 
    gl.glLoadIdentity();     //Reset The Projection Matrix 

    //Calculate The Aspect Ratio Of The Window 
    GLU.gluPerspective(gl, 45.0f, width/height, 0.1f, 500.0f); 

    gl.glMatrixMode(GL10.GL_MODELVIEW);  //Select The Modelview Matrix 
    gl.glLoadIdentity();     //Reset The Modelview Matrix 
} 

在此先感謝。

回答

0

檢查vertexBuffer中頂點的確切順序。 如果順序跳過矩形上的對角線,它將繪製對角線。

+0

我無法讓你100%。請幫我編輯我的代碼問題在哪裏。 – user2583144

+0

它不在你的代碼中。發佈您的頂點數據。 – Tez

+0

我已經將完整的代碼和obj文件上載到項目的資產文件夾中。請在這裏找到這個項目:https://www.dropbox.com/s/ejhlmgb86b05wv2/objLoader.rar ..請幫我畫一下正確的對象。對角線出現,物體內部出現許多扭曲。我無法識別自從最近4天以來問題出在哪裏..提升求助 – user2583144