【发布时间】:2020-05-09 15:43:14
【问题描述】:
所以这里是发生了什么的屏幕截图。
这也是制作vao的方法
public boolean create(float[] modelData) {
FloatBuffer buffer = BufferUtils.createFloatBuffer(modelData.length);
buffer.put(modelData);
buffer.flip();
vaoID = glGenVertexArrays();
glEnableVertexAttribArray(0);
glBindVertexArray(vaoID);
vboID = glGenBuffers();
glBindBuffer(GL_ARRAY_BUFFER, vboID);
glBufferData(GL_ARRAY_BUFFER, buffer, GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
glDisableVertexAttribArray(0);
glBindVertexArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
vertexCount = modelData.length / 3;
return true;
}
以及添加 uv 坐标的那个
public void addUV(float[] uv) {
FloatBuffer buffer = BufferUtils.createFloatBuffer(uv.length);
buffer.put(uv);
buffer.flip();
glBindVertexArray(vaoID);
uvCoordLoc = glGetAttribLocation(shade.getProgramID(), "uv");
glEnableVertexAttribArray(uvCoordLoc);
glVertexAttribPointer(uvCoordLoc, 2, GL_FLOAT, false, 0, buffer);
glDisableVertexAttribArray(uvCoordLoc);
glBindVertexArray(0);
}
最后是渲染的那个。
public void draw(int texID) {
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texID);
int texLoc = glGetUniformLocation(shade.getProgramID(), "tex");
glUniform1i(texLoc, 0);
glBindVertexArray(vaoID);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(uvCoordLoc);
shade.start();
glDrawArrays(GL_QUADS, 0, vertexCount);
shade.stop();
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(uvCoordLoc);
glBindVertexArray(0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, 0);
}
还有我的着色器 顶点着色器
#version 130
out vec4 theColor;
out vec2 uvCoord;
in vec2 uv;
void main() {
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
theColor = gl_Position;
uvCoord = uv;
}
片段着色器。
#version 130
in vec4 theColor;
in vec2 uvCoord;
uniform sampler2D tex;
void main() {
gl_FragColor = texture(tex, uvCoord).rgba;
}
我尝试过弄乱 uv 坐标,但这是我到目前为止所得到的。
以及模型数据和 uv 坐标
Model model = new Model();
model.create(new float[] {
-0.5f,-0.5f,-2f,
-0.5f,0.5f,-2f,
0.5f,0.5f,-2f,
0.5f,-0.5f,-2f
});
model.addUV(new float[] {
0,1,
0,0,
1,0,
1,1
});
任何帮助都会很好
【问题讨论】: