⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 joglmaterialrenderer.java

📁 基于java的3d开发库。对坐java3d的朋友有很大的帮助。
💻 JAVA
字号:
//===========================================================================//=-------------------------------------------------------------------------=//= Module history:                                                         =//= - March 17 2006 - Oscar Chavarro: Original base version                 =//===========================================================================package vsdk.toolkit.render.jogl;import javax.media.opengl.GL;import com.sun.opengl.cg.CgGL;import com.sun.opengl.cg.CGprogram;import vsdk.toolkit.common.VSDK;import vsdk.toolkit.common.ColorRgb;import vsdk.toolkit.environment.Material;public class JoglMaterialRenderer extends JoglRenderer {    private static boolean errorReported = false;    public static void activate(GL gl, Material m)    {        //-----------------------------------------------------------------        if ( nvidiaCgAutomaticMode ) {            activateNvidiaGpuParameters(gl, m,                currentVertexShader, currentPixelShader);        }        //-----------------------------------------------------------------        if ( m == null ) {            if ( errorReported == false ) {                VSDK.reportMessage(null, VSDK.WARNING,                     "JoglMaterialRenderer.activate",                     "Trying to activate null reference to Material." +                     " Avoiding further reporting.");                errorReported = true;            }            return;        }        float opacity = (float)m.getOpacity();        if ( opacity > 1.0f ) opacity = 1.0f;        if ( opacity < 0.0f ) opacity = 0.0f;        if ( opacity < 1.0f - Float.MIN_VALUE ) {            gl.glEnable(gl.GL_BLEND);            gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA);          }          else {            gl.glDisable(gl.GL_BLEND);        }        float phongExp = (float)m.getPhongExponent();        float ambient[] = m.getAmbient().exportToFloatArrayVect();        ambient[3] = opacity;        float diffuse[] = m.getDiffuse().exportToFloatArrayVect();        diffuse[3] = opacity;        float specular[]  = m.getSpecular().exportToFloatArrayVect();        specular[3] = opacity;        //float emission[] = m.getEmission().exportToFloatArrayVect();        //emission[3] = opacity;        if ( m.isDoubleSided() ) {            gl.glDisable(gl.GL_CULL_FACE);          }          else {            gl.glEnable(gl.GL_CULL_FACE);            gl.glCullFace(gl.GL_BACK);        }        gl.glMaterialfv(gl.GL_FRONT_AND_BACK, gl.GL_AMBIENT, ambient, 0);        gl.glMaterialfv(gl.GL_FRONT_AND_BACK, gl.GL_DIFFUSE, diffuse, 0);        gl.glMaterialfv(gl.GL_FRONT_AND_BACK, gl.GL_SPECULAR, specular, 0);        //gl.glMaterialfv(gl.GL_FRONT_AND_BACK, gl.GL_EMISSION, emission, 0); // Do not set! take care!        gl.glMaterialf(gl.GL_FRONT_AND_BACK, gl.GL_SHININESS, phongExp);    }    public static void activateNvidiaGpuParameters(GL gl, Material material,        CGprogram vertexShader, CGprogram pixelShader)    {        double Ka[] = material.getAmbient().exportToDoubleArrayVect();        double Kd[] = material.getDiffuse().exportToDoubleArrayVect();        double Ks[] = material.getSpecular().exportToDoubleArrayVect();        CgGL.cgGLSetParameter3dv(CgGL.cgGetNamedParameter(            vertexShader, "ambientColor"), Ka, 0);        CgGL.cgGLSetParameter3dv(CgGL.cgGetNamedParameter(            vertexShader, "diffuseColor"), Kd, 0);        CgGL.cgGLSetParameter3dv(CgGL.cgGetNamedParameter(            vertexShader, "specularColor"), Ks, 0);        CgGL.cgGLSetParameter1d(CgGL.cgGetNamedParameter(            pixelShader, "phongExponent"), material.getPhongExponent());    }}//===========================================================================//= EOF                                                                     =//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -