OSDN Git Service

* Set AppSettings.setRenderer() to LWJGL_OpenGL_ANY to choose renderer based on...
authorshadowislord <shadowislord@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sun, 1 May 2011 23:40:56 +0000 (23:40 +0000)
committershadowislord <shadowislord@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sun, 1 May 2011 23:40:56 +0000 (23:40 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@7385 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/src/core/com/jme3/system/AppSettings.java
engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglGL1Renderer.java
engine/src/lwjgl-ogl/com/jme3/system/lwjgl/LwjglContext.java

index 8fcfb6c..a3a89b4 100644 (file)
@@ -48,6 +48,7 @@ public class AppSettings extends HashMap<String, Object> {
     public static final String LWJGL_OPENGL1 = "LWJGL-OPENGL1",\r
                                LWJGL_OPENGL2 = "LWJGL-OpenGL2",\r
                                LWJGL_OPENGL3 = "LWJGL-OpenGL3",\r
+                               LWJGL_OPENGL_ANY = "LWJGL-OpenGL-Any",\r
                                JOGL = "JOGL",\r
                                NULL = "NULL";\r
     public static final String LWJGL_OPENAL = "LWJGL";\r
index a43668f..4ad679e 100644 (file)
@@ -1,5 +1,6 @@
 package com.jme3.renderer.lwjgl;
 
+import org.lwjgl.opengl.GL14;
 import com.jme3.math.FastMath;
 import com.jme3.renderer.GL1Renderer;
 import com.jme3.shader.Shader;
@@ -518,7 +519,7 @@ public class LwjglGL1Renderer implements GL1Renderer {
         }
 
         // Check sizes if graphics card doesn't support NPOT
-//        if (!GLContext.getCapabilities().GL_ARB_texture_non_power_of_two){
+        if (!GLContext.getCapabilities().GL_ARB_texture_non_power_of_two){
             if (img.getWidth() != 0 && img.getHeight() != 0){
                 if (!FastMath.isPowerOfTwo(img.getWidth())
                     || !FastMath.isPowerOfTwo(img.getHeight())
@@ -529,14 +530,18 @@ public class LwjglGL1Renderer implements GL1Renderer {
 
                 }
             }
-//        }
+        }
 
         if (!img.hasMipmaps() && mips) {
             // No pregenerated mips available,
             // generate from base level if required
-//            glTexParameteri(target, GL_GENERATE_MIPMAP, GL_TRUE);
-            // TODO: Generate mipmaps here
-            MipMapGenerator.generateMipMaps(img);
+
+            // Check if hardware mips are supported
+            if (GLContext.getCapabilities().OpenGL14){
+                glTexParameteri(target, GL14.GL_GENERATE_MIPMAP, GL_TRUE);
+            }else{
+                MipMapGenerator.generateMipMaps(img);
+            }
         } else {
         }
 
index 77e6731..3c9ed51 100644 (file)
@@ -115,10 +115,20 @@ public abstract class LwjglContext implements JmeContext {
     }
 
     protected void initContextFirstTime(){
-        if (GLContext.getCapabilities().OpenGL20){
+        if (settings.getRenderer().equals(AppSettings.LWJGL_OPENGL2)
+         || settings.getRenderer().equals(AppSettings.LWJGL_OPENGL3)){
             renderer = new LwjglRenderer();
-        }else{
+        }else if (settings.getRenderer().equals(AppSettings.LWJGL_OPENGL1)){
             renderer = new LwjglGL1Renderer();
+        }else if (settings.getRenderer().equals(AppSettings.LWJGL_OPENGL_ANY)){
+            // Choose an appropriate renderer based on capabilities
+            if (GLContext.getCapabilities().OpenGL20){
+                renderer = new LwjglRenderer();
+            }else{
+                renderer = new LwjglGL1Renderer();
+            }
+        }else{
+            throw new UnsupportedOperationException("Unsupported renderer: " + settings.getRenderer());
         }
         
         // Init renderer
@@ -154,14 +164,6 @@ public abstract class LwjglContext implements JmeContext {
     public void internalCreate(){
         timer = new LwjglTimer();
         
-//        if (settings.getRenderer().equals(AppSettings.LWJGL_OPENGL2)
-//         || settings.getRenderer().equals(AppSettings.LWJGL_OPENGL3)){
-//            renderer = new LwjglRenderer();
-//        }else if (settings.getRenderer().equals(AppSettings.LWJGL_OPENGL1)){
-//            renderer = new LwjglGL1Renderer();
-//        }else{
-//            throw new UnsupportedOperationException("Unsupported renderer: " + settings.getRenderer());
-//        }
         synchronized (createdLock){
             created.set(true);
             createdLock.notifyAll();