Commit a4827970 authored by Tomáš Procházka's avatar Tomáš Procházka
Browse files

couldnt fix black screen, problem with shaders.

parent 5b0ca092
......@@ -75,9 +75,10 @@ class RenderBackend:
def createAndUseProgramm(self, shadersList):
# Vytvoření shaderového programu
shader_program = glCreateProgram()
self.check_gl_errors()
for shader in shadersList:
glAttachShader(shader_program, shader)
self.check_gl_errors()
glLinkProgram(shader_program)
link_status = glGetProgramiv(shader_program, GL_LINK_STATUS)
if link_status != GL_TRUE:
......@@ -86,6 +87,15 @@ class RenderBackend:
# Použití shaderového programu
glUseProgram(shader_program)
self.check_gl_errors()
validation_status = glGetProgramiv(shader_program, GL_VALIDATE_STATUS)
print(validation_status)
if validation_status != GL_TRUE:
error_log = glGetProgramInfoLog(shader_program)
print(f"Validation error: {error_log}")
raise RuntimeError("Shader program validation failed")
else:print("shader program arl")
return shader_program
def initialize_buffers(self, shader_program):
# Vytvoření VAO
......@@ -109,8 +119,13 @@ class RenderBackend:
# Povolení atributů vrcholů (např. pozice)
position_location = glGetAttribLocation(shader_program, "inPos")
glEnableVertexAttribArray(position_location)
glVertexAttribPointer(position_location, 3, GL_FLOAT, GL_FALSE, 0, None)
if position_location == -1:
print("Varování: Atribut 'inPos' nebyl nalezen v shader programu. Zkontrolujte, že je správně deklarován.")
else:
# print("v poradku")
glEnableVertexAttribArray(position_location)
glVertexAttribPointer(position_location, 3, GL_FLOAT, GL_FALSE, 0, None)
glBindVertexArray(0) # Odpojte VAO po inicializaci
def draw_cube(self, x, y, z):
......@@ -127,7 +142,7 @@ class RenderBackend:
transform_location = glGetUniformLocation(shader_program, "transform")
transform_matrix = self.create_translation_matrix(x, y, z)
glUniformMatrix4fv(transform_location, 1, GL_FALSE, transform_matrix)
glColor3f(1.0, 0.0, 0.0) # Přidána barva (červená)
# Připojení VAO a vykreslení
glBindVertexArray(self.vao)
glDrawElements(GL_QUADS, len(self.surfaces) * 4, GL_UNSIGNED_INT, None) # Použití EBO
......@@ -181,26 +196,33 @@ class RenderBackend:
#handling movement of camera
self.handleMovement()
# Reset transformační matice
glLoadIdentity()
# glLoadIdentity()
# Znovu nastavení perspektivy po resetu
gluPerspective(45, (self.display[0] / self.display[1]), 0.1, 50.0)
# # Znovu nastavení perspektivy po resetu
# gluPerspective(45, (self.display[0] / self.display[1]), 0.1, 50.0)
# Aplikuj aktuální pozici kamery
glTranslatef(self.cameraPos[0], self.cameraPos[1], self.cameraPos[2])
# # Aplikuj aktuální pozici kamery
# glTranslatef(self.cameraPos[0], self.cameraPos[1], self.cameraPos[2])
def render(self):
# Vykreslení
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # Přidáno čištění bufferu
glClearColor(0.1, 0.1, 1.0, 1.0)
self.draw_cube(0,0,0)
self.draw_cube(5,0,0)
# self.draw_cube(5,0,0)
def engineInit(self):
pygame.init()
pygame.display.set_mode(self.display, DOUBLEBUF | OPENGL)
glEnable(GL_DEPTH_TEST)
def check_gl_errors(self):
while True:
error = glGetError()
if error == GL_NO_ERROR:
print("zadna chyba")
break
print(f"OpenGL Error: {error}")
def mainGameLoop(self):
self.engineInit()
......@@ -208,6 +230,9 @@ class RenderBackend:
while True:
self.update()
self.render()
self.check_gl_errors()
# error = glGetError()
# print(error)
pygame.display.flip()
pygame.time.wait(10)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment