我正在尝试将一个Minecraft爬行动物的纹理渲染到openGL中的矩形,但纹理最终看起来像这样(纹理应该是绿色背景的位置。)
我注意到我想要显示的图片的轮廓与游戏中间的绿色框的颜色相匹配。
我还注意到,当我将图片更改为带有白边的图片时,我会得到纹理应该是白色的框。
这让我觉得程序出于某种原因渲染图像的轮廓。
这是我的一些代码:
顶点着色器:
#version 400 core
in vec3 pos;
in vec2 textCoords;
out vec2 textCoordsPass;
void main(void){
gl_Position = vec4(pos,1.0);
textCoordsPass = textCoords;
}
Fragment Shader:
#version 400 core
in vec2 textCoordsPass;
out vec4 outC;
uniform sampler2D uni;
void main(void){
outC = texture(uni,textCoordsPass);
}
以下是一些着色器代码:
vertexShaderID = loadShader(vertexFile,GL20.GL_VERTEX_SHADER);
fragmentShaderID = loadShader(fragmentFile,GL20.GL_FRAGMENT_SHADER);
programID = GL20.glCreateProgram();
GL20.glAttachShader(programID, vertexShaderID);
GL20.glAttachShader(programID, fragmentShaderID);
bindAttributes();
GL20.glLinkProgram(programID);
GL20.glValidateProgram(programID);
主游戏循环:
public static void main(String args[]){
DisplaySetup.createDisplay();
float[] vertices = { -0.5f, 0.5f, 0,
-0.5f, -0.5f, 0,
0.5f, -0.5f, 0,
0.5f, 0.5f, 0f};
int indices[] = {0,1,3,3,1,2};
Loader load = new Loader();
RawModel Model = load.loadToVAO(vertices, indices);
Render render = new Render();
staticShader shader = new staticShader();
ModelTexture Creeper = new ModelTexture(load.loadTexture("u"));
TexturedModel TextModel = new TexturedModel(Model, Creeper);
while(!Display.isCloseRequested()){
render.prepare();
shader.start();
render.render(TextModel);
shader.stop();
DisplaySetup.updateDisplay();
}
shader.cleanUP();
load.clean();
}
我不确定这是否足够代码所以告诉我你是否认为需要更多代码。
我知道有很多关于类似主题的问题但是,他们似乎确实对我有所帮助我是一个opengl noob所以不要苛刻