texture state caching fix
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
This commit is contained in:
parent
bd297df672
commit
9750091a49
@ -19,5 +19,4 @@
|
||||
Strafing walking animation
|
||||
|
||||
+ bug fixes
|
||||
Rendering pipelines are broken when the katana is not drawn
|
||||
Fix grass rendering distance
|
||||
|
||||
@ -560,6 +560,9 @@ Update frame data for first person 2h sword swing to align with third person bet
|
||||
Fix katana is frustum culled incorrectly
|
||||
- This is because the data is incorrect (blender has an animation already applied, need to push down)
|
||||
|
||||
(08/14/2024)
|
||||
Fix rendering pipelines being broken when the katana is not drawn
|
||||
|
||||
|
||||
# TODO
|
||||
|
||||
|
||||
@ -475,7 +475,7 @@ public class ClientFoliageManager {
|
||||
buffer.position(0);
|
||||
buffer.limit(TARGET_FOLIAGE_SPACING * TARGET_FOLIAGE_SPACING * SINGLE_FOLIAGE_DATA_SIZE_BYTES);
|
||||
//construct data texture
|
||||
Texture dataTexture = new Texture(buffer,SINGLE_FOLIAGE_DATA_SIZE_BYTES / 4,TARGET_FOLIAGE_SPACING * TARGET_FOLIAGE_SPACING);
|
||||
Texture dataTexture = new Texture(Globals.renderingEngine.getOpenGLState(),buffer,SINGLE_FOLIAGE_DATA_SIZE_BYTES / 4,TARGET_FOLIAGE_SPACING * TARGET_FOLIAGE_SPACING);
|
||||
|
||||
//create entity
|
||||
Entity grassEntity = EntityCreationUtils.createClientSpatialEntity();
|
||||
|
||||
@ -471,7 +471,6 @@ public class Main {
|
||||
LoggerInterface.loggerStartup.INFO("Initialize control handler");
|
||||
Globals.controlHandler = ControlHandler.generateExampleControlsMap();
|
||||
Globals.controlHandler.setCallbacks();
|
||||
// Globals.controlHandler = FileLoadingUtils.loadModelObjectFromBakedJsonFile("/Config/keybinds.json",ControlHandler.class);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -485,29 +484,4 @@ public class Main {
|
||||
|
||||
|
||||
|
||||
|
||||
// public static void updateMouseVariables(){
|
||||
// glfwGetCursorPos(Globals.window, mouse_X_Buffer, mouse_Y_Buffer);
|
||||
// xpos = mouse_X_Buffer[0];
|
||||
// ypos = mouse_Y_Buffer[0];
|
||||
// float xoffset = (float) (xpos - mouse_lastX) * mouseSensitivity;
|
||||
// float yoffset = (float) (mouse_lastY - ypos) * mouseSensitivity;
|
||||
// mouse_lastX = (float) xpos;
|
||||
// mouse_lastY = (float) ypos;
|
||||
|
||||
// if(Globals.controlHandler != null && !Globals.controlHandler.isMouseVisible()){
|
||||
// yaw = yaw + xoffset;
|
||||
// pitch = pitch - yoffset;
|
||||
|
||||
// if (pitch > 100.0f) {
|
||||
// pitch = 100.0f;
|
||||
// }
|
||||
// if (pitch < -99.0f) {
|
||||
// pitch = -99.0f;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -104,7 +104,7 @@ public class AssetManager {
|
||||
//textures from disk to gpu
|
||||
for(String currentPath : texturesInQueue){
|
||||
texturesInQueue.remove(currentPath);
|
||||
texturesLoadedIntoMemory.put(currentPath, new Texture(currentPath));
|
||||
texturesLoadedIntoMemory.put(currentPath, new Texture(Globals.renderingEngine.getOpenGLState(), currentPath));
|
||||
}
|
||||
//audio from disk
|
||||
if(Globals.audioEngine != null && Globals.audioEngine.initialized()){
|
||||
|
||||
@ -2,6 +2,7 @@ package electrosphere.engine.assetmanager.queue;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
import electrosphere.engine.Globals;
|
||||
import electrosphere.renderer.texture.Texture;
|
||||
|
||||
/**
|
||||
@ -29,7 +30,7 @@ public class QueuedTexture implements QueuedAsset {
|
||||
|
||||
@Override
|
||||
public void load() {
|
||||
texture = new Texture(data);
|
||||
texture = new Texture(Globals.renderingEngine.getOpenGLState(), data);
|
||||
hasLoaded = true;
|
||||
}
|
||||
|
||||
|
||||
@ -36,10 +36,6 @@ public class OpenGLState {
|
||||
//the key that contains the value of glBlendFunc (which would affect all buffers)
|
||||
static final int ALL_BUFFERS_KEY = -1;
|
||||
|
||||
//the currently bound texture
|
||||
int boundTexturePointer = 0;
|
||||
int boundTextureType = 0;
|
||||
|
||||
//the currently active texture
|
||||
int activeTexture = 0;
|
||||
|
||||
@ -133,11 +129,7 @@ public class OpenGLState {
|
||||
* @param textureValue The texture pointer
|
||||
*/
|
||||
public void glBindTexture(int textureType, int texturePointer){
|
||||
if(this.boundTexturePointer != texturePointer || this.boundTextureType != textureType){
|
||||
this.boundTextureType = textureType;
|
||||
this.boundTexturePointer = texturePointer;
|
||||
GL40.glBindTexture(this.boundTextureType,this.boundTexturePointer);
|
||||
}
|
||||
this.glBindTextureUnit(this.activeTexture, texturePointer, textureType);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -149,7 +141,7 @@ public class OpenGLState {
|
||||
public void glBindTextureUnit(int textureUnit, int texturePointer, int textureType){
|
||||
if(!unitToPointerMap.containsKey(textureUnit) || unitToPointerMap.get(textureUnit)!=texturePointer){
|
||||
unitToPointerMap.put(textureUnit,texturePointer);
|
||||
GL40.glActiveTexture(textureUnit);
|
||||
this.glActiveTexture(textureUnit);
|
||||
GL40.glBindTexture(textureType,texturePointer);
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,11 +45,11 @@ public class FramebufferUtils {
|
||||
public static Texture generateScreenTextureColor(OpenGLState openGLState, int width, int height){
|
||||
Texture texture = new Texture();
|
||||
texture.glTexImage2D(openGLState, width, height, GL_RGB, GL_UNSIGNED_BYTE);
|
||||
texture.setMinFilter(GL_LINEAR);
|
||||
texture.setMagFilter(GL_LINEAR);
|
||||
texture.setMinFilter(openGLState, GL_LINEAR);
|
||||
texture.setMagFilter(openGLState, GL_LINEAR);
|
||||
//these make sure the texture actually clamps to the borders of the quad
|
||||
texture.setWrap(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
||||
texture.checkStatus(openGLState);
|
||||
return texture;
|
||||
@ -58,11 +58,11 @@ public class FramebufferUtils {
|
||||
public static Texture generateScreenTextureColorAlpha(OpenGLState openGLState, int width, int height){
|
||||
Texture texture = new Texture();
|
||||
texture.glTexImage2D(openGLState, width, height, GL_RGBA, GL_UNSIGNED_BYTE);
|
||||
texture.setMinFilter(GL_LINEAR);
|
||||
texture.setMagFilter(GL_LINEAR);
|
||||
texture.setMinFilter(openGLState, GL_LINEAR);
|
||||
texture.setMagFilter(openGLState, GL_LINEAR);
|
||||
//these make sure the texture actually clamps to the borders of the quad
|
||||
texture.setWrap(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
||||
texture.checkStatus(openGLState);
|
||||
return texture;
|
||||
@ -122,11 +122,11 @@ public class FramebufferUtils {
|
||||
//texture
|
||||
Texture texture = new Texture();
|
||||
texture.glTexImage2D(openGLState, Globals.WINDOW_WIDTH, Globals.WINDOW_HEIGHT, GL_RGB, GL_UNSIGNED_BYTE);
|
||||
texture.setMinFilter(GL_LINEAR);
|
||||
texture.setMagFilter(GL_LINEAR);
|
||||
texture.setMinFilter(openGLState, GL_LINEAR);
|
||||
texture.setMagFilter(openGLState, GL_LINEAR);
|
||||
//these make sure the texture actually clamps to the borders of the quad
|
||||
texture.setWrap(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
texture.checkStatus(openGLState);
|
||||
//bind texture to fbo
|
||||
buffer.setMipMapLevel(0);
|
||||
@ -148,11 +148,11 @@ public class FramebufferUtils {
|
||||
//texture
|
||||
Texture texture = new Texture();
|
||||
texture.glTexImage2D(openGLState, width, height, GL_RGBA, GL_UNSIGNED_BYTE);
|
||||
texture.setMinFilter(GL_LINEAR);
|
||||
texture.setMagFilter(GL_LINEAR);
|
||||
texture.setMinFilter(openGLState, GL_LINEAR);
|
||||
texture.setMagFilter(openGLState, GL_LINEAR);
|
||||
//these make sure the texture actually clamps to the borders of the quad
|
||||
texture.setWrap(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
texture.checkStatus(openGLState);
|
||||
//bind texture to fbo
|
||||
buffer.setMipMapLevel(0);
|
||||
@ -192,11 +192,11 @@ public class FramebufferUtils {
|
||||
//texture
|
||||
Texture texture = new Texture();
|
||||
texture.glTexImage2D(openGLState, depthMapWidth, depthMapHeight, GL_DEPTH_COMPONENT, GL_FLOAT);
|
||||
texture.setMinFilter(GL_NEAREST);
|
||||
texture.setMagFilter(GL_NEAREST);
|
||||
texture.setWrap(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
|
||||
texture.setWrap(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
|
||||
texture.setBorderColor(new float[]{ 1.0f, 1.0f, 1.0f, 1.0f });
|
||||
texture.setMinFilter(openGLState, GL_NEAREST);
|
||||
texture.setMagFilter(openGLState, GL_NEAREST);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
|
||||
texture.setBorderColor(openGLState, new float[]{ 1.0f, 1.0f, 1.0f, 1.0f });
|
||||
texture.checkStatus(openGLState);
|
||||
|
||||
//bind texture to fbo
|
||||
@ -216,11 +216,11 @@ public class FramebufferUtils {
|
||||
public static Texture generateDepthBufferTexture(OpenGLState openGLState, int width, int height){
|
||||
Texture texture = new Texture();
|
||||
texture.glTexImage2D(openGLState, width, height, GL_DEPTH_COMPONENT, GL_SHORT);
|
||||
texture.setMinFilter(GL_NEAREST);
|
||||
texture.setMagFilter(GL_NEAREST);
|
||||
texture.setWrap(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
|
||||
texture.setWrap(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
|
||||
texture.setBorderColor(new float[]{ 1.0f, 1.0f, 1.0f, 1.0f });
|
||||
texture.setMinFilter(openGLState, GL_NEAREST);
|
||||
texture.setMagFilter(openGLState, GL_NEAREST);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
|
||||
texture.setWrap(openGLState, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
|
||||
texture.setBorderColor(openGLState, new float[]{ 1.0f, 1.0f, 1.0f, 1.0f });
|
||||
texture.checkStatus(openGLState);
|
||||
return texture;
|
||||
}
|
||||
@ -245,8 +245,8 @@ public class FramebufferUtils {
|
||||
|
||||
public static Texture generateOITAccumulatorTexture(OpenGLState openGLState, int width, int height){
|
||||
Texture texture = new Texture();
|
||||
texture.setMinFilter(GL_LINEAR);
|
||||
texture.setMagFilter(GL_LINEAR);
|
||||
texture.setMinFilter(openGLState, GL_LINEAR);
|
||||
texture.setMagFilter(openGLState, GL_LINEAR);
|
||||
texture.glTexImage2D(openGLState, width, height, GL_RGBA, GL_HALF_FLOAT);
|
||||
texture.checkStatus(openGLState);
|
||||
return texture;
|
||||
@ -254,8 +254,8 @@ public class FramebufferUtils {
|
||||
|
||||
public static Texture generateOITRevealageTexture(OpenGLState openGLState, int width, int height){
|
||||
Texture texture = new Texture();
|
||||
texture.setMinFilter(GL_LINEAR);
|
||||
texture.setMagFilter(GL_LINEAR);
|
||||
texture.setMinFilter(openGLState, GL_LINEAR);
|
||||
texture.setMagFilter(openGLState, GL_LINEAR);
|
||||
texture.glTexImage2D(openGLState, width, height, GL_RED, GL_FLOAT);
|
||||
texture.checkStatus(openGLState);
|
||||
return texture;
|
||||
|
||||
@ -67,18 +67,18 @@ public class Texture {
|
||||
* Creates an in engine texture object from a java bufferedimage object
|
||||
* @param bufferedImage The java bufferedimage object
|
||||
*/
|
||||
public Texture(BufferedImage bufferedImage){
|
||||
public Texture(OpenGLState openGlState, BufferedImage bufferedImage){
|
||||
this.texturePointer = glGenTextures();
|
||||
//bind the new texture
|
||||
glBindTexture(GL_TEXTURE_2D, texturePointer);
|
||||
openGlState.glBindTexture(GL_TEXTURE_2D, texturePointer);
|
||||
//how are we gonna wrap the texture??
|
||||
this.setWrap(GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
|
||||
this.setWrap(GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
|
||||
this.setWrap(openGlState, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
|
||||
this.setWrap(openGlState, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
|
||||
//set the border color to black
|
||||
this.setBorderColor(new float[]{ 0.0f, 0.0f, 0.0f, 1.0f });
|
||||
this.setBorderColor(openGlState, new float[]{ 0.0f, 0.0f, 0.0f, 1.0f });
|
||||
//set magnification and minification operation sampling strategies
|
||||
this.setMinFilter(GL_LINEAR);
|
||||
this.setMagFilter(GL_LINEAR);
|
||||
this.setMinFilter(openGlState, GL_LINEAR);
|
||||
this.setMagFilter(openGlState, GL_LINEAR);
|
||||
//load the image here
|
||||
ByteBuffer data;
|
||||
width = 1;
|
||||
@ -123,11 +123,11 @@ public class Texture {
|
||||
if(hasTransparency){
|
||||
this.pixelFormat = GL_RGBA;
|
||||
this.datatype = GL_UNSIGNED_BYTE;
|
||||
this.glTexImage2D(width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||
this.glTexImage2D(openGlState, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||
} else {
|
||||
this.pixelFormat = GL_RGB;
|
||||
this.datatype = GL_UNSIGNED_BYTE;
|
||||
this.glTexImage2D(width, height, GL_RGB, GL_UNSIGNED_BYTE, data);
|
||||
this.glTexImage2D(openGlState, width, height, GL_RGB, GL_UNSIGNED_BYTE, data);
|
||||
}
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
//check build status
|
||||
@ -135,28 +135,28 @@ public class Texture {
|
||||
if(errorMessage != null){
|
||||
LoggerInterface.loggerRenderer.ERROR(new IllegalStateException("Texture Constructor[from bufferedimage]: " + errorMessage));
|
||||
}
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
openGlState.glBindTexture(GL_TEXTURE_2D, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a texture from an existing file
|
||||
* @param path The path to the image file
|
||||
*/
|
||||
public Texture(String path){
|
||||
public Texture(OpenGLState openGlState, String path){
|
||||
this.path = path;
|
||||
if(!Globals.HEADLESS){
|
||||
//generate the texture object on gpu
|
||||
this.texturePointer = glGenTextures();
|
||||
//bind the new texture
|
||||
glBindTexture(GL_TEXTURE_2D, texturePointer);
|
||||
openGlState.glBindTexture(GL_TEXTURE_2D, texturePointer);
|
||||
//how are we gonna wrap the texture??
|
||||
this.setWrap(GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
|
||||
this.setWrap(GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
|
||||
this.setWrap(openGlState, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
|
||||
this.setWrap(openGlState, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
|
||||
//set the border color to black
|
||||
this.setBorderColor(new float[]{ 0.0f, 0.0f, 0.0f, 1.0f });
|
||||
this.setBorderColor(openGlState, new float[]{ 0.0f, 0.0f, 0.0f, 1.0f });
|
||||
//set magnification and minification operation sampling strategies
|
||||
this.setMinFilter(GL_LINEAR);
|
||||
this.setMagFilter(GL_LINEAR);
|
||||
this.setMinFilter(openGlState, GL_LINEAR);
|
||||
this.setMagFilter(openGlState, GL_LINEAR);
|
||||
//load the image here
|
||||
ByteBuffer data;
|
||||
width = 1;
|
||||
@ -226,11 +226,11 @@ public class Texture {
|
||||
if(hasTransparency){
|
||||
this.pixelFormat = GL_RGBA;
|
||||
this.datatype = GL_UNSIGNED_BYTE;
|
||||
this.glTexImage2D(width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||
this.glTexImage2D(openGlState, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
|
||||
} else {
|
||||
this.pixelFormat = GL_RGB;
|
||||
this.datatype = GL_UNSIGNED_BYTE;
|
||||
this.glTexImage2D(width, height, GL_RGB, GL_UNSIGNED_BYTE, data);
|
||||
this.glTexImage2D(openGlState, width, height, GL_RGB, GL_UNSIGNED_BYTE, data);
|
||||
}
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
//OPTIONAL free the original image data now that it's on the gpu
|
||||
@ -249,17 +249,17 @@ public class Texture {
|
||||
* @param width the 'width' of the 'texture'
|
||||
* @param height the 'height' of the 'texture'
|
||||
*/
|
||||
public Texture(ByteBuffer buffer, int width, int height){
|
||||
public Texture(OpenGLState openGlState, ByteBuffer buffer, int width, int height){
|
||||
if(!Globals.HEADLESS){
|
||||
//generate the texture object on gpu
|
||||
this.texturePointer = glGenTextures();
|
||||
//bind the new texture
|
||||
glBindTexture(GL_TEXTURE_2D, texturePointer);
|
||||
openGlState.glBindTexture(GL_TEXTURE_2D, texturePointer);
|
||||
//how are we gonna wrap the texture??
|
||||
this.setWrap(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
this.setWrap(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
this.setWrap(openGlState, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
this.setWrap(openGlState, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
//disable mipmap
|
||||
this.setMinFilter(GL_LINEAR);
|
||||
this.setMinFilter(openGlState, GL_LINEAR);
|
||||
//call if width != height so opengl figures out how to unpack it properly
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
|
||||
//GL_RED = 32bit r value
|
||||
@ -337,9 +337,9 @@ public class Texture {
|
||||
* @param wrapDir The direction to wrap
|
||||
* @param wrapType The type of wrapping to perform
|
||||
*/
|
||||
public void setWrap(int wrapDir, int wrapType){
|
||||
public void setWrap(OpenGLState openGlState, int wrapDir, int wrapType){
|
||||
//TODO: store wrap type for the direction in this object
|
||||
glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
openGlState.glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
glTexParameteri(GL_TEXTURE_2D, wrapDir, wrapType);
|
||||
}
|
||||
|
||||
@ -347,9 +347,9 @@ public class Texture {
|
||||
* Sets the border color
|
||||
* @param borderColor The color (must be 4 floats)
|
||||
*/
|
||||
public void setBorderColor(float borderColor[]){
|
||||
public void setBorderColor(OpenGLState openGlState, float borderColor[]){
|
||||
this.borderColor = borderColor;
|
||||
glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
openGlState.glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
|
||||
}
|
||||
|
||||
@ -357,9 +357,9 @@ public class Texture {
|
||||
* Sets the min filter
|
||||
* @param minFilter The min filter
|
||||
*/
|
||||
public void setMinFilter(int minFilter){
|
||||
public void setMinFilter(OpenGLState openGlState, int minFilter){
|
||||
this.minFilter = minFilter;
|
||||
glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
openGlState.glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter);
|
||||
}
|
||||
|
||||
@ -367,9 +367,9 @@ public class Texture {
|
||||
* Sets the max filter
|
||||
* @param maxFilter The max filter
|
||||
*/
|
||||
public void setMagFilter(int maxFilter){
|
||||
public void setMagFilter(OpenGLState openGlState, int maxFilter){
|
||||
this.maxFilter = maxFilter;
|
||||
glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
openGlState.glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, maxFilter);
|
||||
}
|
||||
|
||||
@ -402,7 +402,7 @@ public class Texture {
|
||||
* @param datatype The data type of a single component of a pixel (ie GL_BYTE, GL_UNSIGNED_INT, etc)
|
||||
* @param data The data to populate the image with
|
||||
*/
|
||||
public void glTexImage2D(int width, int height, int format, int datatype, ByteBuffer data){
|
||||
public void glTexImage2D(OpenGLState openGLState, int width, int height, int format, int datatype, ByteBuffer data){
|
||||
//store provided values
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
@ -411,7 +411,7 @@ public class Texture {
|
||||
//static values going into call
|
||||
int level = 0;
|
||||
int border = 0; //this must be 0 according to docs
|
||||
glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
openGLState.glBindTexture(GL_TEXTURE_2D,texturePointer);
|
||||
GL40.glTexImage2D(GL_TEXTURE_2D, level, format, width, height, border, format, datatype, data);
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import electrosphere.engine.Globals;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.util.FileUtils;
|
||||
|
||||
@ -46,7 +47,7 @@ public class FontManager {
|
||||
font = new java.awt.Font(java.awt.Font.MONOSPACED, java.awt.Font.PLAIN, 16);
|
||||
}
|
||||
if(font!=null){
|
||||
defaultFont = FontUtils.loadFont(font, false);
|
||||
defaultFont = FontUtils.loadFont(Globals.renderingEngine.getOpenGLState(), font, false);
|
||||
fontMap.put("default",defaultFont);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package electrosphere.renderer.ui.font;
|
||||
|
||||
import electrosphere.renderer.OpenGLState;
|
||||
import electrosphere.renderer.model.Material;
|
||||
import electrosphere.renderer.texture.Texture;
|
||||
|
||||
@ -68,7 +69,7 @@ public class FontUtils {
|
||||
* @param antiAlias if true, antialias, otherwise dont
|
||||
* @return The engine font object
|
||||
*/
|
||||
protected static Font loadFont(java.awt.Font font, boolean antiAlias) {
|
||||
protected static Font loadFont(OpenGLState openGLState, java.awt.Font font, boolean antiAlias) {
|
||||
int imageWidth = 0;
|
||||
int imageHeight = 0;
|
||||
|
||||
@ -152,7 +153,7 @@ public class FontUtils {
|
||||
|
||||
//create material with new font image
|
||||
Material uiMat = new Material();
|
||||
Texture texture = new Texture(image);
|
||||
Texture texture = new Texture(openGLState, image);
|
||||
uiMat.setTexturePointer(texture.getTexturePointer());
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user