- Removed SafeArray usage as it wasn't used.

- Added a forgotten break for cubemap texture parameters.
- Imports and some code cleanup.

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@11015 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
experimental
dan..om 11 years ago
parent 6f28e6e98b
commit 687eb0ff19
  1. 39
      engine/src/lwjgl/com/jme3/renderer/lwjgl/LwjglRenderer.java

@ -55,9 +55,7 @@ import com.jme3.texture.Texture;
import com.jme3.texture.Texture.WrapAxis; import com.jme3.texture.Texture.WrapAxis;
import com.jme3.util.BufferUtils; import com.jme3.util.BufferUtils;
import com.jme3.util.ListMap; import com.jme3.util.ListMap;
import com.jme3.util.NativeObject;
import com.jme3.util.NativeObjectManager; import com.jme3.util.NativeObjectManager;
import com.jme3.util.SafeArrayList;
import java.nio.*; import java.nio.*;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.List; import java.util.List;
@ -482,7 +480,7 @@ public class LwjglRenderer implements Renderer {
} }
if (state.isDepthTest() && !context.depthTestEnabled) { if (state.isDepthTest() && !context.depthTestEnabled) {
glEnable(GL_DEPTH_TEST); glEnable(GL_DEPTH_TEST);
glDepthFunc(convertTestFunction(context.depthFunc)); glDepthFunc(convertTestFunction(context.depthFunc));
context.depthTestEnabled = true; context.depthTestEnabled = true;
} else if (!state.isDepthTest() && context.depthTestEnabled) { } else if (!state.isDepthTest() && context.depthTestEnabled) {
@ -503,9 +501,9 @@ public class LwjglRenderer implements Renderer {
context.alphaTestEnabled = false; context.alphaTestEnabled = false;
} }
if (state.getAlphaFallOff() != context.alphaTestFallOff) { if (state.getAlphaFallOff() != context.alphaTestFallOff) {
glAlphaFunc(convertTestFunction(context.alphaFunc), context.alphaTestFallOff); glAlphaFunc(convertTestFunction(context.alphaFunc), context.alphaTestFallOff);
context.alphaTestFallOff = state.getAlphaFallOff(); context.alphaTestFallOff = state.getAlphaFallOff();
} }
if (state.getAlphaFunc() != context.alphaFunc) { if (state.getAlphaFunc() != context.alphaFunc) {
glAlphaFunc(convertTestFunction(state.getAlphaFunc()), context.alphaTestFallOff); glAlphaFunc(convertTestFunction(state.getAlphaFunc()), context.alphaTestFallOff);
context.alphaFunc = state.getAlphaFunc(); context.alphaFunc = state.getAlphaFunc();
@ -1168,13 +1166,13 @@ public class LwjglRenderer implements Renderer {
if (GLContext.getCapabilities().GL_EXT_framebuffer_blit) { if (GLContext.getCapabilities().GL_EXT_framebuffer_blit) {
int srcX0 = 0; int srcX0 = 0;
int srcY0 = 0; int srcY0 = 0;
int srcX1 = 0; int srcX1;
int srcY1 = 0; int srcY1;
int dstX0 = 0; int dstX0 = 0;
int dstY0 = 0; int dstY0 = 0;
int dstX1 = 0; int dstX1;
int dstY1 = 0; int dstY1;
int prevFBO = context.boundFBO; int prevFBO = context.boundFBO;
@ -1768,12 +1766,13 @@ public class LwjglRenderer implements Renderer {
if (context.pointSprite) { if (context.pointSprite) {
return; // Attempt to fix glTexParameter crash for some ATI GPUs return; // Attempt to fix glTexParameter crash for some ATI GPUs
} }
// repeat modes // repeat modes
switch (tex.getType()) { switch (tex.getType()) {
case ThreeDimensional: case ThreeDimensional:
case CubeMap: // cubemaps use 3D coords case CubeMap: // cubemaps use 3D coords
glTexParameteri(target, GL_TEXTURE_WRAP_R, convertWrapMode(tex.getWrap(WrapAxis.R))); glTexParameteri(target, GL_TEXTURE_WRAP_R, convertWrapMode(tex.getWrap(WrapAxis.R)));
break;
case TwoDimensional: case TwoDimensional:
case TwoDimensionalArray: case TwoDimensionalArray:
glTexParameteri(target, GL_TEXTURE_WRAP_T, convertWrapMode(tex.getWrap(WrapAxis.T))); glTexParameteri(target, GL_TEXTURE_WRAP_T, convertWrapMode(tex.getWrap(WrapAxis.T)));
@ -1789,7 +1788,7 @@ public class LwjglRenderer implements Renderer {
// R to Texture compare mode // R to Texture compare mode
if (tex.getShadowCompareMode() != Texture.ShadowCompareMode.Off) { if (tex.getShadowCompareMode() != Texture.ShadowCompareMode.Off) {
glTexParameteri(target, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE); glTexParameteri(target, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
glTexParameteri(target, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY); glTexParameteri(target, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY);
if (tex.getShadowCompareMode() == Texture.ShadowCompareMode.GreaterOrEqual) { if (tex.getShadowCompareMode() == Texture.ShadowCompareMode.GreaterOrEqual) {
glTexParameteri(target, GL_TEXTURE_COMPARE_FUNC, GL_GEQUAL); glTexParameteri(target, GL_TEXTURE_COMPARE_FUNC, GL_GEQUAL);
} else { } else {
@ -1797,7 +1796,7 @@ public class LwjglRenderer implements Renderer {
} }
}else{ }else{
//restoring default value //restoring default value
glTexParameteri(target, GL_TEXTURE_COMPARE_MODE, GL_NONE); glTexParameteri(target, GL_TEXTURE_COMPARE_MODE, GL_NONE);
} }
tex.compareModeUpdated(); tex.compareModeUpdated();
} }
@ -1805,7 +1804,7 @@ public class LwjglRenderer implements Renderer {
/** /**
* Uploads the given image to the GL driver. * Uploads the given image to the GL driver.
* *
* @param img The image to upload * @param img The image to upload
* @param type How the data in the image argument should be interpreted. * @param type How the data in the image argument should be interpreted.
* @param unit The texture slot to be used to upload the image, not important * @param unit The texture slot to be used to upload the image, not important
@ -1822,7 +1821,7 @@ public class LwjglRenderer implements Renderer {
statistics.onNewTexture(); statistics.onNewTexture();
} }
// bind texture // bind texture
int target = convertTextureType(type, img.getMultiSamples(), -1); int target = convertTextureType(type, img.getMultiSamples(), -1);
if (context.boundTextureUnit != unit) { if (context.boundTextureUnit != unit) {
glActiveTexture(GL_TEXTURE0 + unit); glActiveTexture(GL_TEXTURE0 + unit);
@ -1879,7 +1878,7 @@ public class LwjglRenderer implements Renderer {
throw new RendererException("Multisample textures not supported by graphics hardware"); throw new RendererException("Multisample textures not supported by graphics hardware");
} }
} }
if (target == GL_TEXTURE_CUBE_MAP) { if (target == GL_TEXTURE_CUBE_MAP) {
// Check max texture size before upload // Check max texture size before upload
if (img.getWidth() > maxCubeTexSize || img.getHeight() > maxCubeTexSize) { if (img.getWidth() > maxCubeTexSize || img.getHeight() > maxCubeTexSize) {
@ -1905,12 +1904,12 @@ public class LwjglRenderer implements Renderer {
if (!caps.contains(Caps.TextureArray)) { if (!caps.contains(Caps.TextureArray)) {
throw new RendererException("Texture arrays not supported by graphics hardware"); throw new RendererException("Texture arrays not supported by graphics hardware");
} }
List<ByteBuffer> data = img.getData(); List<ByteBuffer> data = img.getData();
// -1 index specifies prepare data for 2D Array // -1 index specifies prepare data for 2D Array
TextureUtil.uploadTexture(img, target, -1, 0); TextureUtil.uploadTexture(img, target, -1, 0);
for (int i = 0; i < data.size(); i++) { for (int i = 0; i < data.size(); i++) {
// upload each slice of 2D array in turn // upload each slice of 2D array in turn
// this time with the appropriate index // this time with the appropriate index
@ -2406,7 +2405,7 @@ public class LwjglRenderer implements Renderer {
} }
private void renderMeshDefault(Mesh mesh, int lod, int count) { private void renderMeshDefault(Mesh mesh, int lod, int count) {
VertexBuffer indices = null; VertexBuffer indices;
VertexBuffer interleavedData = mesh.getBuffer(Type.InterleavedData); VertexBuffer interleavedData = mesh.getBuffer(Type.InterleavedData);
if (interleavedData != null && interleavedData.isUpdateNeeded()) { if (interleavedData != null && interleavedData.isUpdateNeeded()) {
@ -2414,7 +2413,7 @@ public class LwjglRenderer implements Renderer {
} }
// IntMap<VertexBuffer> buffers = mesh.getBuffers(); // IntMap<VertexBuffer> buffers = mesh.getBuffers();
SafeArrayList<VertexBuffer> buffersList = mesh.getBufferList(); // SafeArrayList<VertexBuffer> buffersList = mesh.getBufferList();
if (mesh.getNumLodLevels() > 0) { if (mesh.getNumLodLevels() > 0) {
indices = mesh.getLodLevel(lod); indices = mesh.getLodLevel(lod);

Loading…
Cancel
Save