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.
68 lines
2.6 KiB
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();
|
|
}
|
|
}
|
|
|