当前位置: 首页>>代码示例>>Java>>正文


Java Shader类代码示例

本文整理汇总了Java中com.jme3.shader.Shader的典型用法代码示例。如果您正苦于以下问题:Java Shader类的具体用法?Java Shader怎么用?Java Shader使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


Shader类属于com.jme3.shader包,在下文中一共展示了Shader类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: deleteShader

import com.jme3.shader.Shader; //导入依赖的package包/类
public void deleteShader(Shader shader) {
        if (shader.getId() == -1) {
            logger.warning("Shader is not uploaded to GPU, cannot delete.");
            return;
        }
        for (ShaderSource source : shader.getSources()) {
            if (source.getId() != -1) {
                glDetachShader(shader.getId(), source.getId());
                // the next part is done by the GLObjectManager automatically
//                glDeleteShader(source.getId());
            }
        }
        // kill all references so sources can be collected
        // if needed.
        shader.resetSources();
        glDeleteProgram(shader.getId());

        statistics.onDeleteShader();
    }
 
开发者ID:mleoking,项目名称:PhET,代码行数:20,代码来源:LwjglRenderer.java

示例2: NodePanel

import com.jme3.shader.Shader; //导入依赖的package包/类
/**
 * Creates new form NodePanel
 */
@SuppressWarnings("LeakingThisInConstructor")
public NodePanel(ShaderNodeBlock node, ShaderNodeDefinition def) {
    super();
    shaderType = def.getType();
    if (def.getType() == Shader.ShaderType.Vertex) {
        type = NodePanel.NodeType.Vertex;
    } else {
        type = NodePanel.NodeType.Fragment;
    }
    init(def.getInputs(), def.getOutputs());

    node.addPropertyChangeListener(WeakListeners.propertyChange(this, node));
    this.addPropertyChangeListener(WeakListeners.propertyChange(node, this));
    refresh(node);
    addKeyListener(this);
    this.filePaths.addAll(def.getShadersPath());
    String defPath = ((DefinitionBlock) node.getContents().get(0)).getPath();
    this.filePaths.add(defPath);
    toolBar = new NodeToolBar(this);        
}
 
开发者ID:jMonkeyEngine,项目名称:sdk,代码行数:24,代码来源:NodePanel.java

示例3: updateUniformLocation

import com.jme3.shader.Shader; //导入依赖的package包/类
/*********************************************************************\
 |* Shaders                                                           *|
 \*********************************************************************/
protected void updateUniformLocation(Shader shader, Uniform uniform) {
    stringBuf.setLength(0);
    stringBuf.append(uniform.getName()).append('\0');
    updateNameBuffer();
    if (verboseLogging) {
        logger.log(Level.INFO, "GLES20.glGetUniformLocation({0}, {1})", new Object[]{shader.getId(), uniform.getName()});
    }
    int loc = Gdx.gl20.glGetUniformLocation(shader.getId(), uniform.getName());
    checkGLError();
    if (loc < 0) {
        uniform.setLocation(-1);
        // uniform is not declared in shader
        if (verboseLogging) {
            logger.log(Level.WARNING, "Uniform [{0}] is not declared in shader.", uniform.getName());
        }
    } else {
        uniform.setLocation(loc);
    }
}
 
开发者ID:chototsu,项目名称:MikuMikuStudio,代码行数:23,代码来源:GdxRenderer.java

示例4: updateUniformLocation

import com.jme3.shader.Shader; //导入依赖的package包/类
/*********************************************************************\
|* Shaders                                                           *|
\*********************************************************************/
protected void updateUniformLocation(Shader shader, Uniform uniform) {
    stringBuf.setLength(0);
    stringBuf.append(uniform.getName()).append('\0');
    updateNameBuffer();
    if (verboseLogging) {
        logger.log(Level.INFO, "GLES20.glGetUniformLocation({0}, {1})", new Object[]{shader.getId(), uniform.getName()});
    }
    int loc = GLES20.glGetUniformLocation(shader.getId(), uniform.getName());
    checkGLError();
    if (loc < 0) {
        uniform.setLocation(-1);
        // uniform is not declared in shader
        if (verboseLogging) {
            logger.log(Level.WARNING, "Uniform [{0}] is not declared in shader.", uniform.getName());
        }
    } else {
        uniform.setLocation(loc);
    }
}
 
开发者ID:chototsu,项目名称:MikuMikuStudio,代码行数:23,代码来源:OGLESShaderRenderer.java

示例5: updateUniform

import com.jme3.shader.Shader; //导入依赖的package包/类
protected void updateUniform(Shader shader, Uniform uniform) {
    if (glslVer != -1) {
        int shaderId = shader.getId();

        assert uniform.getName() != null;
        assert shader.getId() > 0;
        if (context.boundShaderProgram != shaderId) {
            helper.useProgram(shaderId);
            statistics.onShaderUse(shader, true);
            boundShader = shader;
            context.boundShaderProgram = shaderId;
        }
        else {
            statistics.onShaderUse(shader, false);
        }

        updateUniformVar(shader, uniform);
    }
}
 
开发者ID:chototsu,项目名称:MikuMikuStudio,代码行数:20,代码来源:AbstractRenderer.java

示例6: updateUniformLocation

import com.jme3.shader.Shader; //导入依赖的package包/类
protected void updateUniformLocation(Shader shader, Uniform uniform) {
    if (glslVer != -1) {
        stringBuf.setLength(0);
        stringBuf.append(uniform.getName()).append('\0');
        updateNameBuffer();
        int loc = getUniformLocation(shader);
        if (loc < 0) {
            uniform.setLocation(-1);
            // uniform is not declared in shader
            logger.log(Level.WARNING, "Uniform {0} is not declared in shader.",
                    uniform.getName());
        }
        else {
            uniform.setLocation(loc);
        }
    }
}
 
开发者ID:chototsu,项目名称:MikuMikuStudio,代码行数:18,代码来源:AbstractRenderer.java

示例7: deleteShader

import com.jme3.shader.Shader; //导入依赖的package包/类
public void deleteShader(Shader shader) {
    if (glslVer != -1) {
        if (shader.getId() == -1) {
            logger.warning("Shader is not uploaded to GPU, cannot delete.");
            return;
        }
        GL gl = GLContext.getCurrentGL();
        for (ShaderSource source : shader.getSources()) {
            if (source.getId() != -1) {
                gl.getGL2().glDetachShader(shader.getId(), source.getId());
                // the next part is done by the GLObjectManager automatically
                // glDeleteShader(source.getId());
            }
        }
        // kill all references so sources can be collected
        // if needed.
        shader.resetSources();
        gl.getGL2().glDeleteProgram(shader.getId());

        statistics.onDeleteShader();
    }
}
 
开发者ID:chototsu,项目名称:MikuMikuStudio,代码行数:23,代码来源:JoglRenderer.java

示例8: deleteShader

import com.jme3.shader.Shader; //导入依赖的package包/类
public void deleteShader(Shader shader) {
    if (shader.getId() == -1) {
        logger.warning("Shader is not uploaded to GPU, cannot delete.");
        return;
    }

    for (ShaderSource source : shader.getSources()) {
        if (source.getId() != -1) {
            glDetachShader(shader.getId(), source.getId());
            deleteShaderSource(source);
        }
    }

    // kill all references so sources can be collected
    // if needed.
    shader.resetSources();
    glDeleteProgram(shader.getId());

    statistics.onDeleteShader();
}
 
开发者ID:chototsu,项目名称:MikuMikuStudio,代码行数:21,代码来源:LwjglRenderer.java

示例9: containsShader

import com.jme3.shader.Shader; //导入依赖的package包/类
/**
 * Check a material definition on containing a shader.
 *
 * @param materialDef the material definition.
 * @param assetPath   the path of the shader.
 * @return true if the material definition contains the shader.
 */
private static boolean containsShader(@NotNull final MaterialDef materialDef, @NotNull final String assetPath) {

    final List<TechniqueDef> defaultTechniques = materialDef.getTechniqueDefs("Default");

    for (final TechniqueDef technique : defaultTechniques) {
        final EnumMap<Shader.ShaderType, String> shaderProgramNames = technique.getShaderProgramNames();
        if (shaderProgramNames.containsValue(assetPath)) return true;
    }

    return false;
}
 
开发者ID:JavaSaBr,项目名称:jmonkeybuilder,代码行数:19,代码来源:MaterialUtils.java

示例10: updateUniformLocation

import com.jme3.shader.Shader; //导入依赖的package包/类
/*********************************************************************\
|* Shaders                                                           *|
\*********************************************************************/
protected void updateUniformLocation(Shader shader, Uniform uniform) {
    stringBuf.setLength(0);
    stringBuf.append(uniform.getName()).append('\0');
    updateNameBuffer();
    int loc = glGetUniformLocation(shader.getId(), nameBuf);
    if (loc < 0) {
        uniform.setLocation(-1);
        // uniform is not declared in shader
        logger.log(Level.INFO, "Uniform {0} is not declared in shader.", uniform.getName());
    } else {
        uniform.setLocation(loc);
    }
}
 
开发者ID:mleoking,项目名称:PhET,代码行数:17,代码来源:LwjglRenderer.java

示例11: updateShaderUniforms

import com.jme3.shader.Shader; //导入依赖的package包/类
protected void updateShaderUniforms(Shader shader) {
        ListMap<String, Uniform> uniforms = shader.getUniformMap();
//        for (Uniform uniform : shader.getUniforms()){
        for (int i = 0; i < uniforms.size(); i++) {
            Uniform uniform = uniforms.getValue(i);
            if (uniform.isUpdateNeeded()) {
                updateUniform(shader, uniform);
            }
        }
    }
 
开发者ID:mleoking,项目名称:PhET,代码行数:11,代码来源:LwjglRenderer.java

示例12: resetUniformLocations

import com.jme3.shader.Shader; //导入依赖的package包/类
protected void resetUniformLocations(Shader shader) {
        ListMap<String, Uniform> uniforms = shader.getUniformMap();
//        for (Uniform uniform : shader.getUniforms()){
        for (int i = 0; i < uniforms.size(); i++) {
            Uniform uniform = uniforms.getValue(i);
            uniform.reset(); // e.g check location again
        }
    }
 
开发者ID:mleoking,项目名称:PhET,代码行数:9,代码来源:LwjglRenderer.java

示例13: onShaderUse

import com.jme3.shader.Shader; //导入依赖的package包/类
/**
 * Called by the Renderer when a shader has been utilized.
 * 
 * @param shader The shader that was used
 * @param wasSwitched If true, the shader has required a state switch
 */
public void onShaderUse(Shader shader, boolean wasSwitched){
    assert shader.id >= 1;

    if (!shadersUsed.contains(shader.id))
        shadersUsed.add(shader.id);

    if (wasSwitched)
        numShaderSwitches++;
}
 
开发者ID:mleoking,项目名称:PhET,代码行数:16,代码来源:Statistics.java

示例14: preload

import com.jme3.shader.Shader; //导入依赖的package包/类
/**
 * Preloads this material for the given render manager.
 * <p>
 * Preloading the material can ensure that when the material is first
 * used for rendering, there won't be any delay since the material has
 * been already been setup for rendering.
 * 
 * @param rm The render manager to preload for
 */
public void preload(RenderManager rm) {
    autoSelectTechnique(rm);

    Renderer r = rm.getRenderer();
    TechniqueDef techDef = technique.getDef();

    Collection<MatParam> params = paramValues.values();
    for (MatParam param : params) {
        if (param instanceof MatParamTexture) {
            MatParamTexture texParam = (MatParamTexture) param;
            r.setTexture(0, texParam.getTextureValue());
        } else {
            if (!techDef.isUsingShaders()) {
                continue;
            }

            technique.updateUniformParam(param.getName(),
                    param.getVarType(),
                    param.getValue(), true);
        }
    }

    Shader shader = technique.getShader();
    if (techDef.isUsingShaders()) {
        r.setShader(shader);
    }
}
 
开发者ID:mleoking,项目名称:PhET,代码行数:37,代码来源:Material.java

示例15: clearUniformsSetByCurrent

import com.jme3.shader.Shader; //导入依赖的package包/类
private void clearUniformsSetByCurrent(Shader shader) {
    ListMap<String, Uniform> uniforms = shader.getUniformMap();
    for (int i = 0; i < uniforms.size(); i++) {
        Uniform u = uniforms.getValue(i);
        u.clearSetByCurrentMaterial();
    }
}
 
开发者ID:mleoking,项目名称:PhET,代码行数:8,代码来源:Material.java


注:本文中的com.jme3.shader.Shader类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。