use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.
the class Spatial method removeControl.
/**
* Removes the first control that is an instance of the given class.
*
* @see Spatial#addControl(com.jme3.scene.control.Control)
*/
public void removeControl(Class<? extends Control> controlType) {
boolean before = requiresUpdates();
for (int i = 0; i < controls.size(); i++) {
if (controlType.isAssignableFrom(controls.get(i).getClass())) {
Control control = controls.remove(i);
control.setSpatial(null);
// added to match the javadoc -pspeed
break;
}
}
boolean after = requiresUpdates();
// can rebuild its update list.
if (parent != null && before != after) {
parent.invalidateUpdateList();
}
}
use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.
the class RenderManager method renderGeometry.
/**
* Renders the given geometry.
* <p>
* First the proper world matrix is set, if
* the geometry's {@link Geometry#setIgnoreTransform(boolean) ignore transform}
* feature is enabled, the identity world matrix is used, otherwise, the
* geometry's {@link Geometry#getWorldMatrix() world transform matrix} is used.
* <p>
* Once the world matrix is applied, the proper material is chosen for rendering.
* If a {@link #setForcedMaterial(com.jme3.material.Material) forced material} is
* set on this RenderManager, then it is used for rendering the geometry,
* otherwise, the {@link Geometry#getMaterial() geometry's material} is used.
* <p>
* If a {@link #setForcedTechnique(java.lang.String) forced technique} is
* set on this RenderManager, then it is selected automatically
* on the geometry's material and is used for rendering. Otherwise, one
* of the {@link MaterialDef#getDefaultTechniques() default techniques} is
* used.
* <p>
* If a {@link #setForcedRenderState(com.jme3.material.RenderState) forced
* render state} is set on this RenderManager, then it is used
* for rendering the material, and the material's own render state is ignored.
* Otherwise, the material's render state is used as intended.
*
* @param geom The geometry to render
*
* @see Technique
* @see RenderState
* @see Material#selectTechnique(java.lang.String, com.jme3.renderer.RenderManager)
* @see Material#render(com.jme3.scene.Geometry, com.jme3.renderer.RenderManager)
*/
public void renderGeometry(Geometry geom) {
if (geom.isIgnoreTransform()) {
setWorldMatrix(Matrix4f.IDENTITY);
} else {
setWorldMatrix(geom.getWorldMatrix());
}
// Perform light filtering if we have a light filter.
LightList lightList = geom.getWorldLightList();
if (lightFilter != null) {
filteredLightList.clear();
lightFilter.filterLights(geom, filteredLightList);
lightList = filteredLightList;
}
Material material = geom.getMaterial();
//else the geom is not rendered
if (forcedTechnique != null) {
MaterialDef matDef = material.getMaterialDef();
if (matDef.getTechniqueDefs(forcedTechnique) != null) {
Technique activeTechnique = material.getActiveTechnique();
String previousTechniqueName = activeTechnique != null ? activeTechnique.getDef().getName() : TechniqueDef.DEFAULT_TECHNIQUE_NAME;
geom.getMaterial().selectTechnique(forcedTechnique, this);
//saving forcedRenderState for future calls
RenderState tmpRs = forcedRenderState;
if (geom.getMaterial().getActiveTechnique().getDef().getForcedRenderState() != null) {
//forcing forced technique renderState
forcedRenderState = geom.getMaterial().getActiveTechnique().getDef().getForcedRenderState();
}
// use geometry's material
material.render(geom, lightList, this);
material.selectTechnique(previousTechniqueName, this);
//restoring forcedRenderState
forcedRenderState = tmpRs;
//Reverted this part from revision 6197
//If forcedTechnique does not exists, and forcedMaterial is not set, the geom MUST NOT be rendered
} else if (forcedMaterial != null) {
// use forced material
forcedMaterial.render(geom, lightList, this);
}
} else if (forcedMaterial != null) {
// use forced material
forcedMaterial.render(geom, lightList, this);
} else {
material.render(geom, lightList, this);
}
}
use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.
the class AWTLoader method load.
public Image load(BufferedImage img, boolean flipY) {
int width = img.getWidth();
int height = img.getHeight();
switch(img.getType()) {
case // most common in PNG images w/ alpha
BufferedImage.TYPE_4BYTE_ABGR:
byte[] dataBuf1 = (byte[]) extractImageData(img);
if (flipY)
flipImage(dataBuf1, width, height, 32);
ByteBuffer data1 = BufferUtils.createByteBuffer(img.getWidth() * img.getHeight() * 4);
data1.put(dataBuf1);
return new Image(Format.ABGR8, width, height, data1, null, com.jme3.texture.image.ColorSpace.sRGB);
case // most common in JPEG images
BufferedImage.TYPE_3BYTE_BGR:
byte[] dataBuf2 = (byte[]) extractImageData(img);
if (flipY)
flipImage(dataBuf2, width, height, 24);
ByteBuffer data2 = BufferUtils.createByteBuffer(img.getWidth() * img.getHeight() * 3);
data2.put(dataBuf2);
return new Image(Format.BGR8, width, height, data2, null, com.jme3.texture.image.ColorSpace.sRGB);
case // grayscale fonts
BufferedImage.TYPE_BYTE_GRAY:
byte[] dataBuf3 = (byte[]) extractImageData(img);
if (flipY)
flipImage(dataBuf3, width, height, 8);
ByteBuffer data3 = BufferUtils.createByteBuffer(img.getWidth() * img.getHeight());
data3.put(dataBuf3);
return new Image(Format.Luminance8, width, height, data3, null, com.jme3.texture.image.ColorSpace.sRGB);
default:
break;
}
if (img.getTransparency() == Transparency.OPAQUE) {
ByteBuffer data = BufferUtils.createByteBuffer(img.getWidth() * img.getHeight() * 3);
// no alpha
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int ny = y;
if (flipY) {
ny = height - y - 1;
}
int rgb = img.getRGB(x, ny);
byte r = (byte) ((rgb & 0x00FF0000) >> 16);
byte g = (byte) ((rgb & 0x0000FF00) >> 8);
byte b = (byte) ((rgb & 0x000000FF));
data.put(r).put(g).put(b);
}
}
data.flip();
return new Image(Format.RGB8, width, height, data, null, com.jme3.texture.image.ColorSpace.sRGB);
} else {
ByteBuffer data = BufferUtils.createByteBuffer(img.getWidth() * img.getHeight() * 4);
// alpha
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int ny = y;
if (flipY) {
ny = height - y - 1;
}
int rgb = img.getRGB(x, ny);
byte a = (byte) ((rgb & 0xFF000000) >> 24);
byte r = (byte) ((rgb & 0x00FF0000) >> 16);
byte g = (byte) ((rgb & 0x0000FF00) >> 8);
byte b = (byte) ((rgb & 0x000000FF));
data.put(r).put(g).put(b).put(a);
}
}
data.flip();
return new Image(Format.RGBA8, width, height, data, null, com.jme3.texture.image.ColorSpace.sRGB);
}
}
use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.
the class CubeField method simpleInitApp.
/**
* Initializes game
*/
@Override
public void simpleInitApp() {
Logger.getLogger("com.jme3").setLevel(Level.WARNING);
flyCam.setEnabled(false);
setDisplayStatView(false);
Keys();
defaultFont = assetManager.loadFont("Interface/Fonts/Default.fnt");
pressStart = new BitmapText(defaultFont, false);
fpsScoreText = new BitmapText(defaultFont, false);
loadText(fpsScoreText, "Current Score: 0", defaultFont, 0, 2, 0);
loadText(pressStart, "PRESS ENTER", defaultFont, 0, 5, 0);
player = createPlayer();
rootNode.attachChild(player);
cubeField = new ArrayList<Geometry>();
obstacleColors = new ArrayList<ColorRGBA>();
gameReset();
}
use of com.jme3.opencl in project jmonkeyengine by jMonkeyEngine.
the class TestContextSwitching method simpleInitApp.
@Override
public void simpleInitApp() {
clContext = null;
NiftyJmeDisplay niftyDisplay = NiftyJmeDisplay.newNiftyJmeDisplay(assetManager, inputManager, audioRenderer, guiViewPort);
nifty = niftyDisplay.getNifty();
nifty.fromXml("jme3test/opencl/ContextSwitchingScreen.xml", "Screen", this);
guiViewPort.addProcessor(niftyDisplay);
inputManager.setCursorVisible(true);
flyCam.setEnabled(false);
}
Aggregations