Fixed a bug
This commit is contained in:
parent
6e7631eb08
commit
b788bedc48
@ -604,7 +604,8 @@ public class Keyboard {
|
||||
refresh = true;
|
||||
break;
|
||||
case ZOOM_MODE:
|
||||
StaticVars.windowZoom = ((StaticVars.windowZoom - 0.5f) % 2f) + 1f;
|
||||
StaticVars.windowZoom = ((StaticVars.windowZoom - 1) % 2) + 2;
|
||||
// StaticVars.windowZoom = ((StaticVars.windowZoom - 0.5f) % 2f) + 1f;
|
||||
refresh = true;
|
||||
case HISTORY_BACK:
|
||||
DisplayManager.INSTANCE.goBack();
|
||||
|
@ -2,6 +2,7 @@ package org.warp.picalculator.gui.graphicengine.gpu;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
@ -14,7 +15,9 @@ import org.warp.picalculator.gui.graphicengine.GraphicEngine;
|
||||
import org.warp.picalculator.gui.graphicengine.RenderingLoop;
|
||||
import org.warp.picalculator.gui.graphicengine.Skin;
|
||||
|
||||
import com.jogamp.opengl.GL;
|
||||
import com.jogamp.opengl.GLProfile;
|
||||
import com.jogamp.opengl.util.texture.Texture;
|
||||
|
||||
public class GPUEngine implements GraphicEngine {
|
||||
|
||||
@ -27,6 +30,8 @@ public class GPUEngine implements GraphicEngine {
|
||||
int[] size = new int[] { StaticVars.screenSize[0], StaticVars.screenSize[1] };
|
||||
private final CopyOnWriteArrayList<BinaryFont> registeredFonts = new CopyOnWriteArrayList<BinaryFont>();
|
||||
private Semaphore exitSemaphore = new Semaphore(0);
|
||||
protected LinkedList<Texture> registeredTextures;
|
||||
protected LinkedList<Texture> unregisteredTextures;
|
||||
|
||||
@Override
|
||||
public int[] getSize() {
|
||||
@ -68,6 +73,8 @@ public class GPUEngine implements GraphicEngine {
|
||||
@Override
|
||||
public void create(Runnable onInitialized) {
|
||||
created = true;
|
||||
registeredTextures = new LinkedList<>();
|
||||
unregisteredTextures = new LinkedList<>();
|
||||
r = new GPURenderer();
|
||||
wnd = new NEWTWindow(this);
|
||||
wnd.create();
|
||||
@ -193,4 +200,8 @@ public class GPUEngine implements GraphicEngine {
|
||||
return registeredFonts;
|
||||
}
|
||||
|
||||
public void registerTexture(Texture t) {
|
||||
unregisteredTextures.addLast(t);
|
||||
}
|
||||
|
||||
}
|
@ -45,7 +45,7 @@ public class GPUSkin implements Skin {
|
||||
t = GPURenderer.importTexture(i.f, i.deleteOnExit);
|
||||
w = i.w;
|
||||
h = i.h;
|
||||
t.setTexParameteri(gl, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
|
||||
((GPUEngine)d).registerTexture(t);
|
||||
initialized = true;
|
||||
} catch (GLException | IOException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -53,6 +53,7 @@ import com.jogamp.opengl.fixedfunc.GLLightingFunc;
|
||||
import com.jogamp.opengl.fixedfunc.GLMatrixFunc;
|
||||
import com.jogamp.opengl.fixedfunc.GLPointerFunc;
|
||||
import com.jogamp.opengl.util.Animator;
|
||||
import com.jogamp.opengl.util.texture.Texture;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -89,8 +90,10 @@ class NEWTWindow implements GLEventListener {
|
||||
final GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2ES1));
|
||||
System.out.println("Loaded OpenGL");
|
||||
// We may at this point tweak the caps and request a translucent drawable
|
||||
caps.setHardwareAccelerated(true);
|
||||
caps.setBackgroundOpaque(true); //transparency window
|
||||
caps.setSampleBuffers(false);
|
||||
// caps.setSampleBuffers(true);
|
||||
// caps.setNumSamples(4);
|
||||
final GLWindow glWindow = GLWindow.create(caps);
|
||||
window = glWindow;
|
||||
|
||||
@ -292,7 +295,7 @@ class NEWTWindow implements GLEventListener {
|
||||
|
||||
//Vsync
|
||||
gl.setSwapInterval(1);
|
||||
|
||||
|
||||
//Textures
|
||||
gl.glEnable(GL.GL_TEXTURE_2D);
|
||||
|
||||
@ -301,6 +304,9 @@ class NEWTWindow implements GLEventListener {
|
||||
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
|
||||
gl.glShadeModel(GLLightingFunc.GL_FLAT);
|
||||
|
||||
//Multisampling
|
||||
//gl.glEnable(GL.GL_MULTISAMPLE);
|
||||
|
||||
if (onInitialized != null) {
|
||||
onInitialized.run();
|
||||
onInitialized = null;
|
||||
@ -332,7 +338,15 @@ class NEWTWindow implements GLEventListener {
|
||||
private void onZoomChanged(GL2ES1 gl, boolean sizeChanged) {
|
||||
float precWindowZoom = windowZoom;
|
||||
windowZoom = StaticVars.getCurrentZoomValue();
|
||||
System.out.println("sizechange" + windowZoom);
|
||||
|
||||
if (((precWindowZoom % ((int)precWindowZoom)) != 0f) != ((windowZoom % ((int)windowZoom)) != 0f)) {
|
||||
boolean linear = (windowZoom % ((int)windowZoom)) != 0f;
|
||||
|
||||
for(Texture t : disp.registeredTextures) {
|
||||
t.setTexParameteri(gl, GL.GL_TEXTURE_MAG_FILTER, linear ? GL.GL_LINEAR : GL.GL_NEAREST);
|
||||
t.setTexParameteri(gl, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
|
||||
}
|
||||
}
|
||||
|
||||
final int width = realWindowSize[0];
|
||||
final int height = realWindowSize[1];
|
||||
@ -360,6 +374,17 @@ class NEWTWindow implements GLEventListener {
|
||||
if (windowZoom != StaticVars.getCurrentZoomValue()) {
|
||||
onZoomChanged(gl, false);
|
||||
}
|
||||
|
||||
Boolean linear = null;
|
||||
while(!disp.unregisteredTextures.isEmpty()) {
|
||||
if (linear == null) {
|
||||
linear = (windowZoom % ((int)windowZoom)) != 0f;
|
||||
}
|
||||
Texture t = disp.unregisteredTextures.pop();
|
||||
t.setTexParameteri(gl, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
|
||||
t.setTexParameteri(gl, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
|
||||
disp.registeredTextures.addLast(t);
|
||||
}
|
||||
|
||||
gl.glEnableClientState(GLPointerFunc.GL_COLOR_ARRAY);
|
||||
gl.glEnableClientState(GLPointerFunc.GL_VERTEX_ARRAY);
|
||||
|
@ -151,6 +151,7 @@ public class MathInputScreen extends Screen {
|
||||
} else {
|
||||
skinN = 21;
|
||||
}
|
||||
DisplayManager.INSTANCE.guiSkin.use(DisplayManager.INSTANCE.engine);
|
||||
renderer.glFillRect(2 + 18 * pos + 2 * spacersNumb, 2, 16, 16, 16 * skinN, 16 * 0, 16, 16);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user