Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
José Pardo Madera
/
pag_practicas_2025
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
420348d3
authored
Sep 25, 2025
by
José Pardo Madera
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Apartado 1 practica 3: Dibujar triangulo
parent
0b1250b5
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
98 additions
and
5 deletions
main.cpp
renderer.cpp
renderer.h
main.cpp
View file @
420348d3
...
...
@@ -115,9 +115,11 @@ int main() {
glfwSetScrollCallback
(
window
,
scroll_callback
);
renderer
.
inicializaOpenGL
();
renderer
.
setClearColor
(
ventana_color
->
getColor
());
renderer
.
enableDepthTest
();
renderer
.
creaShaderProgram
();
renderer
.
creaModelo
();
while
(
!
glfwWindowShouldClose
(
window
))
{
renderer
.
clear
();
...
...
renderer.cpp
View file @
420348d3
#include "renderer.h"
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include "log.h"
#include "ventana_color.h"
...
...
@@ -16,6 +17,12 @@ namespace PAG {
void
Renderer
::
clear
()
{
glClear
(
GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT
);
glPolygonMode
(
GL_FRONT_AND_BACK
,
GL_FILL
);
glUseProgram
(
idSP
);
glBindVertexArray
(
idVAO
);
glBindBuffer
(
GL_ELEMENT_ARRAY_BUFFER
,
idIBO
);
glDrawElements
(
GL_TRIANGLES
,
3
,
GL_UNSIGNED_INT
,
nullptr
);
}
void
Renderer
::
setClearColor
(
std
::
array
<
float
,
3
>
rgb
)
{
...
...
@@ -30,7 +37,8 @@ namespace PAG {
glViewport
(
0
,
0
,
width
,
height
);
}
void
Renderer
::
enableDepthTest
()
{
void
Renderer
::
inicializaOpenGL
()
{
setClearColor
(
0
,
0
,
0
,
0
);
glEnable
(
GL_DEPTH_TEST
);
}
...
...
@@ -54,7 +62,77 @@ namespace PAG {
}
}
void
Renderer
::
creaShaderProgram
()
{
std
::
string
miVertexShader
=
"#version 410
\n
"
"layout (location = 0) in vec3 posicion;
\n
"
"void main() {
\n
"
" gl_Position = vec4(posicion, 1);
\n
"
"}
\n
"
;
std
::
string
miFragmentShader
=
"#version 410
\n
"
"out vec4 colorFragmento;
\n
"
"void main() {
\n
"
" colorFragmento = vec4(1.0, .4, .2, 1.0);
\n
"
"}
\n
"
;
idVS
=
glCreateShader
(
GL_VERTEX_SHADER
);
const
GLchar
*
fuenteVS
=
miVertexShader
.
c_str
();
glShaderSource
(
idVS
,
1
,
&
fuenteVS
,
nullptr
);
glCompileShader
(
idVS
);
idFS
=
glCreateShader
(
GL_FRAGMENT_SHADER
);
const
GLchar
*
fuenteFS
=
miFragmentShader
.
c_str
();
glShaderSource
(
idFS
,
1
,
&
fuenteFS
,
nullptr
);
glCompileShader
(
idFS
);
idSP
=
glCreateProgram
();
glAttachShader
(
idSP
,
idVS
);
glAttachShader
(
idSP
,
idFS
);
glLinkProgram
(
idSP
);
}
void
Renderer
::
creaModelo
()
{
GLfloat
vertices
[]
=
{
-
0.5
,
-
0.5
,
0
,
0.5
,
-
0.5
,
0
,
0
,
0.5
,
0
};
GLuint
indices
[]
=
{
0
,
1
,
2
};
glGenVertexArrays
(
1
,
&
idVAO
);
glBindVertexArray
(
idVAO
);
glGenBuffers
(
1
,
&
idVBO
);
glBindBuffer
(
GL_ARRAY_BUFFER
,
idVBO
);
glBufferData
(
GL_ARRAY_BUFFER
,
9
*
sizeof
(
GLfloat
),
vertices
,
GL_STATIC_DRAW
);
glVertexAttribPointer
(
0
,
3
,
GL_FLOAT
,
GL_FALSE
,
3
*
sizeof
(
GLfloat
),
nullptr
);
glEnableVertexAttribArray
(
0
);
glGenBuffers
(
1
,
&
idIBO
);
glBindBuffer
(
GL_ELEMENT_ARRAY_BUFFER
,
idIBO
);
glBufferData
(
GL_ELEMENT_ARRAY_BUFFER
,
3
*
sizeof
(
GLuint
),
indices
,
GL_STATIC_DRAW
);
}
Renderer
::
Renderer
()
{};
Renderer
::~
Renderer
()
{};
Renderer
::~
Renderer
()
{
if
(
idVS
)
{
glDeleteShader
(
idVS
);
}
if
(
idFS
)
{
glDeleteShader
(
idFS
);
}
if
(
idSP
)
{
glDeleteProgram
(
idSP
);
}
if
(
idVBO
)
{
glDeleteBuffers
(
1
,
&
idVBO
);
}
if
(
idIBO
)
{
glDeleteBuffers
(
1
,
&
idIBO
);
}
if
(
idVAO
)
{
glDeleteVertexArrays
(
1
,
&
idVAO
);
}
};
}
renderer.h
View file @
420348d3
...
...
@@ -3,6 +3,8 @@
#include <string>
#include <array>
#include <glad/glad.h>
#include "ventana.h"
namespace
PAG
{
...
...
@@ -20,7 +22,7 @@ namespace PAG {
void
setClearColor
(
float
,
float
,
float
,
float
);
void
setViewport
(
int
width
,
int
height
);
void
enableDepthTest
();
void
inicializaOpenGL
();
std
::
string
getRendererName
();
std
::
string
getVendor
();
...
...
@@ -28,7 +30,18 @@ namespace PAG {
std
::
string
getShadingLanguageVersion
();
void
wakeUp
(
Ventana
&
)
override
;
void
creaShaderProgram
();
void
creaModelo
();
private
:
GLuint
idVS
=
0
;
GLuint
idFS
=
0
;
GLuint
idSP
=
0
;
GLuint
idVAO
=
0
;
GLuint
idVBO
=
0
;
GLuint
idIBO
=
0
;
Renderer
();
~
Renderer
();
};
...
...
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