[問題] openGL 光源、材質問題
大家好,我現在使用的是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
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章