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
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;
}
// 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())
}
}
-// }
+ }
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 {
}
}
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
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();