A complete 3D game development suite written purely in Java.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
jmonkeyengine/jme3-examples/src/main/java/jme3test/material/TestTessellationShader.java

68 lines
2.6 KiB

package jme3test.material;
import com.jme3.app.SimpleApplication;
import com.jme3.input.KeyInput;
import com.jme3.input.controls.AnalogListener;
import com.jme3.input.controls.KeyTrigger;
import com.jme3.material.Material;
import com.jme3.scene.Geometry;
import com.jme3.scene.Mesh;
import com.jme3.scene.VertexBuffer;
import com.jme3.scene.shape.Quad;
import com.jme3.util.BufferUtils;
import java.util.concurrent.Callable;
/**
* Created by michael on 28.02.15.
*/
public class TestTessellationShader extends SimpleApplication {
Material tessellationMaterial;
int tessFactor=5;
@Override
public void simpleInitApp() {
tessellationMaterial = new Material(getAssetManager(), "Materials/Tess/SimpleTess.j3md");
tessellationMaterial.setInt("TessellationFactor", tessFactor);
tessellationMaterial.getAdditionalRenderState().setWireframe(true);
Quad quad = new Quad(10, 10);
quad.clearBuffer(VertexBuffer.Type.Index);
quad.setBuffer(VertexBuffer.Type.Index, 4, BufferUtils.createIntBuffer(0, 1, 2, 3));
quad.setMode(Mesh.Mode.Patch);
quad.setPatchVertexCount(4);
Geometry geometry = new Geometry("tessTest", quad);
geometry.setMaterial(tessellationMaterial);
rootNode.attachChild(geometry);
getInputManager().addMapping("TessUp", new KeyTrigger(KeyInput.KEY_O));
getInputManager().addMapping("TessDo", new KeyTrigger(KeyInput.KEY_L));
getInputManager().addListener(new AnalogListener() {
@Override
public void onAnalog(String name, float value, float tpf) {
if(name.equals("TessUp")){
tessFactor++;
enqueue(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
tessellationMaterial.setInt("TessellationFactor",tessFactor);
return true;
}
});
}
if(name.equals("TessDo")){
tessFactor--;
enqueue(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
tessellationMaterial.setInt("TessellationFactor",tessFactor);
return true;
}
});
}
}
},"TessUp","TessDo");
}
public static void main(String[] args) {
new TestTessellationShader().start();
}
}