作者BWF (大野狼)
看板C_Sharp
标题[问题] openGL 光源、材质问题
时间Wed May 1 11:23:11 2013
大家好,我现在使用的是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