2013-08-31 58 views
0

我「想」學習的OpenGL使用這本書「學習的OpenGL ES適用於iOS:一個實用指南,以現代的3D圖形編程由Erik M.巴克」無法獲得3D模型紋理,以顯示正確的

我已經到了我試圖在測試應用程序中加載3D模型以確認我的知識的階段,儘管我可以顯示模型,但它似乎反轉了,並且紋理似乎部分顯示(或顯示不正確)。

我試過GL_BLEND,GL_DEPTH_TEST,使用ortho不使用ortho無濟於事,並意識到我可能錯過了一些不可或缺的東西。思考它可能與面部法線有關嗎?

這裏應該出現什麼:

enter image description here

,這就是我得到:

enter image description here 誰能幫助?

由於

+0

這是一個真正的質感?它看起來像一個背面剔除問題給我。嘗試禁用該功能,然後嘗試顛倒被認爲是背面的纏繞方向。 – ClayMontgomery

+0

不知道,我所做的是在本書示例中使用球體obj數據來查看我得到了什麼結果,並用本書中應用的紋理顯示地球。所以我「認爲」我正在做對,否則地球球將無法正確顯示?奇怪的。我基本上採用了我重寫的示例應用程序,並將分子對象替換爲地球球體。我也嘗試過使用可以旋轉,翻譯和縮放等3D模型的另一本書示例,該示例運行良好,但是當我嘗試引入自己的對象時,我會得到這種顯示? – Piginhat

+0

如果有幫助,我可以發佈該項目嗎? – Piginhat

回答

0

這本書的作者看着這個m e,並發現以下內容:

.obj模型使用「四邊形」,4邊多邊形生成,但OpenGL ES只能渲染點,線和三角形。結果,每個四邊形只有一半(1個三角形)被渲染。

在Blender中打開.obj文件並使用三角形導出導致顯示正確的顯示。

感謝埃裏克·巴克抽出時間來幫助他的讀者和感謝一個太@clayMontgomery他的幫助;-)

0

我想你的球形模型的代碼假定背面剔除被禁用或者需要相反的纏繞方向(順時針或逆時針時針)爲其三角形條帶。您應該嘗試正確地初始化OpenGL ES以瞭解該代碼的期望。我想試試這個:

gl.glDisable(GL10.GL_CULL_FACE); 

OR

gl.glEnable(GL10.GL_CULL_FACE); 
gl.glFrontFace(GL10.GL_CCW); 
gl.glCullFace(GL10.GL_BACK); 

OR

gl.glEnable(GL10.GL_CULL_FACE); 
gl.glFrontFace(GL10.GL_CW); 
gl.glCullFace(GL10.GL_BACK); 

欲瞭解更多信息,請參見 「多邊形詳細信息」 中的OpenGL紅皮書,第2章:

http://www.glprogramming.com/red/chapter02.html 
+0

嗨,非常感謝你的幫助謝謝你!我嘗試了你的建議,並且有一些改進,至少顏色似乎適用於模型的正確部分。這是剔臉禁用[IMG] http://i41.tinypic.com/2i9366x.jpg [/ IMG],這是使用前面連接[IMG] http://i41.tinypic.com/fk19hk.jpg [/ IMG] IMG] – Piginhat

+0

我看到球體正在等待glFrustumf或glOrthof座標系統。所以使用ortho就像self.baseEffect.transform.projectionMatrix = GLKMatrix4MakeOrtho(-0.5 * aspectRatio,0.5 * aspectRatio,-0.5f,0.5,-5.0,5.0);給這[IMG] http://i43.tinypic.com/2a6ozds.jpg [/ IMG] – Piginhat