Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Tomáš Procházka
minecraft-clone
Commits
a4827970
Commit
a4827970
authored
5 months ago
by
Tomáš Procházka
Browse files
Options
Download
Email Patches
Plain Diff
couldnt fix black screen, problem with shaders.
parent
5b0ca092
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
37 additions
and
12 deletions
+37
-12
main.py
main.py
+37
-12
No files found.
main.py
View file @
a4827970
...
...
@@ -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
)
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment