[問題] openGL 光源、材質問題

看板C_Sharp (C#)作者 (大野狼)時間12年前 (2013/05/01 11:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
大家好,我現在使用的是sharpGL,應該跟原本的openGL相差無幾,我遇到一些光源、材 質的問題。 因為有載入多個3D模型,所以顏色、材質(ka,kd,ks)的部分需要個別設定,但後來發現一 旦設定好材質,就會把所有載入的模型變成同一種材質,請問一下這個部分要怎麼改?或 是要改用其他方法? 部分程式碼如下↓ float[] global_ambient = new float[] { 0.5f, 0.5f, 0.5f, 1.0f }; float[] lmodel_ambient = new float[] { 0.2f, 0.2f, 0.2f, 1.0f }; float[] light0pos = new float[] { 0.0f, 5.0f, 10.0f, 1.0f }; float[] light0ambient = new float[] { 0.0f, 0.0f, 0.0f, 1.0f }; float[] light0diffuse = new float[] { 1.0f, 1.0f, 1.0f, 1.0f }; float[] light0specular = new float[] { 1.0f, 1.0f, 1.0f, 1.0f }; gl.LightModel(OpenGL.GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); gl.LightModel(OpenGL.GL_LIGHT_MODEL_AMBIENT, global_ambient); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_POSITION, light0pos); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_AMBIENT, light0ambient); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_DIFFUSE, light0diffuse); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_SPECULAR, light0specular); gl.Enable(OpenGL.GL_LIGHTING); gl.Enable(OpenGL.GL_LIGHT0); gl.Enable(OpenGL.GL_DEPTH_TEST); gl.ShadeModel(OpenGL.GL_SMOOTH); float[] material_ambient = { 0.0f, 0.0f, 0.0f, 1.0f}; float[] material_diffuse = { 0.898039f, 0.619608f, 0.227451f, 1.0f }; float[] material_specular = { 0.330000f, 0.330000f, 0.330000f, 1.0f }; gl.Material( OpenGL.GL_FRONT, OpenGL.GL_AMBIENT, material_ambient); gl.Material( OpenGL.GL_FRONT, OpenGL.GL_DIFFUSE, material_diffuse); gl.Material( OpenGL.GL_FRONT, OpenGL.GL_SPECULAR, material_specular); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.32.71
文章代碼(AID): #1HW8gYzc (C_Sharp)
文章代碼(AID): #1HW8gYzc (C_Sharp)