我正在嘗試為三角形添加木質紋理。代碼僅適用于三角形。但當我嘗試添加紋理時會出現錯誤。我認為問題出在 GLSL 或創建 EBO/VBO 中(不確定)。整個屏幕保持黑色。這是完整的代碼。我在這里做錯了什么?from OpenGL.GL import *from OpenGL.GLU import *from OpenGL.GL import shadersimport glfwimport numpy as npfrom PIL import ImageVERTEX_SHADER = """#version 330 layout (location = 0) in vec4 position; in vec2 InTexCoords; out vec2 OutTexCoords; void main(){ gl_Position = position; OutTexCoords = InTexCoords; }"""FRAGMENT_SHADER = """#version 330 out vec4 FragColor; uniform vec4 triangleColor; in vec2 OutTexCoords; uniform sampler2D sampleTex; void main() { FragColor = texture(sampleTex,OutTexCoords); }"""shaderProgram = Nonedef initialize(): global VERTEXT_SHADER global FRAGMENT_SHADER global shaderProgram #compiling shaders vertexshader = shaders.compileShader(VERTEX_SHADER, GL_VERTEX_SHADER) fragmentshader = shaders.compileShader(FRAGMENT_SHADER, GL_FRAGMENT_SHADER) #creating shaderProgram shaderProgram = shaders.compileProgram(vertexshader, fragmentshader) #vertex and indices data #triangle #texture vertices = [-0.5, -0.5, 0.0, 0.0,0.0, 0.5, -0.5, 0.0, 1.0,0.0, 0.0, 0.5, 0.0, 0.5,1.0] indices = [0,1,2] vertices = np.array(vertices, dtype=np.float32) indices = np.array(vertices, dtype=np.float32) #add vertices to buffer VBO = glGenBuffers(1) glBindBuffer(GL_ARRAY_BUFFER, VBO) glBufferData(GL_ARRAY_BUFFER, vertices.nbytes, vertices, GL_STATIC_DRAW) #add indices to buffer EBO = glGenBuffers(1) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,EBO) glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices, GL_STATIC_DRAW) position = 0 glVertexAttribPointer(position, 3, GL_FLOAT, GL_FALSE, 24, ctypes.c_void_p(0)) glEnableVertexAttribArray(position)我試圖遵循本教程learnopengl。但教程是用 C++ 編寫的。此外,我的方法略有不同。我沒有在頂點中添加顏色代碼。但我不認為這是添加紋理的方式的問題。
如何給三角形添加紋理?
慕的地6264312
2023-06-27 13:21:11