From d48b06c951a72d89653753413cbfc2522ed51c18 Mon Sep 17 00:00:00 2001 From: "sha..rd" Date: Sun, 17 Jul 2011 23:38:54 +0000 Subject: [PATCH] * Enable point sprite mode only for first texture unit. May prevent ATI driver crashes git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7875 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../jme3/renderer/lwjgl/LwjglRenderer.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java b/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java index e7870e008..fa4f995d5 100644 --- a/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java +++ b/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java @@ -531,13 +531,28 @@ public class LwjglRenderer implements Renderer { } if (state.isPointSprite() && !context.pointSprite) { - glEnable(GL_POINT_SPRITE); - glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE); - glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); + // Only enable/disable sprite + if (context.boundTextures[0] != null){ + if (context.boundTextureUnit != 0){ + glActiveTexture(GL_TEXTURE0); + context.boundTextureUnit = 0; + } + glEnable(GL_POINT_SPRITE); + glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE); + glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); + } context.pointSprite = true; } else if (!state.isPointSprite() && context.pointSprite) { - glDisable(GL_POINT_SPRITE); - context.pointSprite = false; + if (context.boundTextures[0] != null){ + if (context.boundTextureUnit != 0){ + glActiveTexture(GL_TEXTURE0); + context.boundTextureUnit = 0; + } + glDisable(GL_POINT_SPRITE); + glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_FALSE); + glDisable(GL_VERTEX_PROGRAM_POINT_SIZE); + context.pointSprite = false; + } } if (state.isPolyOffset()) {