Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
ProjectiveTextureMapping
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
WooHyungChoi
ProjectiveTextureMapping
Commits
3c8c1d7e
Commit
3c8c1d7e
authored
5 years ago
by
Woohyung Choi
Browse files
Options
Downloads
Patches
Plain Diff
add front, right. up vector in RenderObject.
parent
5839ec6d
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
LearnOpenGL/OpenGLWrapper.cpp
+24
-13
24 additions, 13 deletions
LearnOpenGL/OpenGLWrapper.cpp
LearnOpenGL/OpenGLWrapper.h
+6
-0
6 additions, 0 deletions
LearnOpenGL/OpenGLWrapper.h
with
30 additions
and
13 deletions
LearnOpenGL/OpenGLWrapper.cpp
+
24
−
13
View file @
3c8c1d7e
...
@@ -68,6 +68,7 @@ RenderObject::RenderObject(Mesh * _mesh)
...
@@ -68,6 +68,7 @@ RenderObject::RenderObject(Mesh * _mesh)
mesh
=
_mesh
;
mesh
=
_mesh
;
update_model_matrix
();
update_model_matrix
();
update_directional_vector
();
}
}
Material
*
RenderObject
::
get_material
()
Material
*
RenderObject
::
get_material
()
...
@@ -97,11 +98,29 @@ void RenderObject::update_model_matrix()
...
@@ -97,11 +98,29 @@ void RenderObject::update_model_matrix()
model
=
glm
::
scale
(
model
,
scale
);
model
=
glm
::
scale
(
model
,
scale
);
}
}
void
RenderObject
::
update_directional_vector
()
{
glm
::
vec3
front
;
glm
::
vec3
up
;
glm
::
vec3
right
;
glm
::
vec3
_front
;
front
.
x
=
cos
(
glm
::
radians
(
rotate
.
y
))
*
cos
(
glm
::
radians
(
rotate
.
x
));
front
.
y
=
sin
(
glm
::
radians
(
rotate
.
x
));
front
.
z
=
sin
(
glm
::
radians
(
rotate
.
y
))
*
cos
(
glm
::
radians
(
rotate
.
x
));
front
=
glm
::
normalize
(
_front
);
right
=
glm
::
normalize
(
glm
::
cross
(
front
,
glm
::
vec3
(
0
,
1
,
0
)));
up
=
glm
::
normalize
(
glm
::
cross
(
right
,
front
));
}
void
RenderObject
::
set_translate
(
glm
::
vec3
_translate
)
void
RenderObject
::
set_translate
(
glm
::
vec3
_translate
)
{
{
translate
=
_translate
;
translate
=
_translate
;
update_model_matrix
();
update_model_matrix
();
update_directional_vector
();
}
}
void
RenderObject
::
set_rotate
(
glm
::
vec3
_rotate
)
void
RenderObject
::
set_rotate
(
glm
::
vec3
_rotate
)
...
@@ -109,6 +128,7 @@ void RenderObject::set_rotate(glm::vec3 _rotate)
...
@@ -109,6 +128,7 @@ void RenderObject::set_rotate(glm::vec3 _rotate)
rotate
=
_rotate
;
rotate
=
_rotate
;
update_model_matrix
();
update_model_matrix
();
update_directional_vector
();
}
}
void
RenderObject
::
set_scale
(
glm
::
vec3
_scale
)
void
RenderObject
::
set_scale
(
glm
::
vec3
_scale
)
...
@@ -123,6 +143,7 @@ void RenderObject::move(glm::vec3 _delta)
...
@@ -123,6 +143,7 @@ void RenderObject::move(glm::vec3 _delta)
translate
+=
_delta
;
translate
+=
_delta
;
update_model_matrix
();
update_model_matrix
();
update_directional_vector
();
}
}
void
RenderObject
::
move
(
glm
::
vec3
_direction
,
glm
::
vec1
_velocity
)
void
RenderObject
::
move
(
glm
::
vec3
_direction
,
glm
::
vec1
_velocity
)
...
@@ -177,23 +198,13 @@ void RenderObject::render(Camera &camera)
...
@@ -177,23 +198,13 @@ void RenderObject::render(Camera &camera)
void
RenderObject
::
projective_render
(
Camera
&
camera
)
void
RenderObject
::
projective_render
(
Camera
&
camera
)
{
{
glm
::
vec3
projrotate
=
glm
::
vec3
(
60.0f
,
0.0f
,
0.0f
);
glm
::
vec3
front
;
front
.
x
=
cos
(
glm
::
radians
(
projrotate
.
y
))
*
cos
(
glm
::
radians
(
projrotate
.
x
));
front
.
y
=
sin
(
glm
::
radians
(
projrotate
.
x
));
front
.
z
=
sin
(
glm
::
radians
(
projrotate
.
y
))
*
cos
(
glm
::
radians
(
projrotate
.
x
));
front
=
glm
::
normalize
(
front
);
auto
Right
=
glm
::
normalize
(
glm
::
cross
(
front
,
glm
::
vec3
(
0.0f
,
1.0f
,
0.0f
)));
auto
Up
=
glm
::
normalize
(
glm
::
cross
(
Right
,
front
));
glm
::
mat4
bias
=
{
0.5f
,
0.0f
,
0.0f
,
0.5f
,
glm
::
mat4
bias
=
{
0.5f
,
0.0f
,
0.0f
,
0.5f
,
0.0f
,
0.5f
,
0.0f
,
0.5f
,
0.0f
,
0.5f
,
0.0f
,
0.5f
,
0.0f
,
0.0f
,
0.5f
,
0.5f
,
0.0f
,
0.0f
,
0.5f
,
0.5f
,
0.0f
,
0.0f
,
0.0f
,
1.0f
};
0.0f
,
0.0f
,
0.0f
,
1.0f
};
glm
::
mat4
projector_view
=
glm
::
lookAt
(
camera
.
Position
,
camera
.
Position
+
camera
.
Front
,
camera
.
Up
);
glm
::
mat4
projector_view
=
glm
::
lookAt
(
camera
.
Position
,
camera
.
Position
+
camera
.
Front
,
camera
.
Up
);
glm
::
mat4
projector_projection
=
glm
::
perspective
(
glm
::
radians
(
camera
.
Zoom
),
(
float
)
_SCR_WIDTH
/
(
float
)
_SCR_HEIGHT
,
0.1f
,
100.0f
);
glm
::
mat4
projector_projection
=
glm
::
perspective
(
glm
::
radians
(
camera
.
Zoom
),
1.0f
,
0.1f
,
100.0f
);
auto
prog
=
material
->
get_program
();
auto
prog
=
material
->
get_program
();
glUseProgram
(
prog
);
glUseProgram
(
prog
);
...
@@ -362,12 +373,12 @@ void set_uniform_value(GLuint &prog, const char *name, glm::ivec3 &value)
...
@@ -362,12 +373,12 @@ void set_uniform_value(GLuint &prog, const char *name, glm::ivec3 &value)
auto
uniform
=
glGetUniformLocation
(
prog
,
name
);
auto
uniform
=
glGetUniformLocation
(
prog
,
name
);
glUniform3iv
(
uniform
,
1
,
&
value
.
x
);
glUniform3iv
(
uniform
,
1
,
&
value
.
x
);
}
}
void
set_uniform_value
(
GLuint
&
prog
,
const
char
*
name
,
glm
::
vec4
&
value
)
void
set_uniform_value
(
GLuint
&
prog
,
const
char
*
name
,
glm
::
vec4
value
)
{
{
auto
uniform
=
glGetUniformLocation
(
prog
,
name
);
auto
uniform
=
glGetUniformLocation
(
prog
,
name
);
glUniform4fv
(
uniform
,
1
,
&
value
.
x
);
glUniform4fv
(
uniform
,
1
,
&
value
.
x
);
}
}
void
set_uniform_value
(
GLuint
&
prog
,
const
char
*
name
,
glm
::
ivec4
&
value
)
void
set_uniform_value
(
GLuint
&
prog
,
const
char
*
name
,
glm
::
ivec4
value
)
{
{
auto
uniform
=
glGetUniformLocation
(
prog
,
name
);
auto
uniform
=
glGetUniformLocation
(
prog
,
name
);
glUniform4iv
(
uniform
,
1
,
&
value
.
x
);
glUniform4iv
(
uniform
,
1
,
&
value
.
x
);
...
...
This diff is collapsed.
Click to expand it.
LearnOpenGL/OpenGLWrapper.h
+
6
−
0
View file @
3c8c1d7e
...
@@ -64,7 +64,12 @@ private:
...
@@ -64,7 +64,12 @@ private:
glm
::
vec3
rotate
;
glm
::
vec3
rotate
;
glm
::
vec3
scale
;
glm
::
vec3
scale
;
glm
::
vec3
front
;
glm
::
vec3
up
;
glm
::
vec3
right
;
void
update_model_matrix
();
void
update_model_matrix
();
void
update_directional_vector
();
public:
public:
RenderObject
(
Mesh
*
_mesh
);
RenderObject
(
Mesh
*
_mesh
);
...
@@ -72,6 +77,7 @@ public:
...
@@ -72,6 +77,7 @@ public:
Material
*
get_material
();
Material
*
get_material
();
GLuint
get_vertex_count
();
GLuint
get_vertex_count
();
glm
::
mat4
get_model_matrix
();
glm
::
mat4
get_model_matrix
();
glm
::
vec3
get_front
();
void
set_translate
(
glm
::
vec3
_translate
);
void
set_translate
(
glm
::
vec3
_translate
);
void
set_rotate
(
glm
::
vec3
_rotate
);
void
set_rotate
(
glm
::
vec3
_rotate
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment