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
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
WooHyungChoi
ProjectiveTextureMapping
Commits
56d115fe
Commit
56d115fe
authored
5 years ago
by
Woohyung Choi
Browse files
Options
Downloads
Patches
Plain Diff
Make Transform class.
parent
3c8c1d7e
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
LearnOpenGL/OpenGLWrapper.cpp
+28
-16
28 additions, 16 deletions
LearnOpenGL/OpenGLWrapper.cpp
LearnOpenGL/OpenGLWrapper.h
+19
-10
19 additions, 10 deletions
LearnOpenGL/OpenGLWrapper.h
LearnOpenGL/Source.cpp
+24
-26
24 additions, 26 deletions
LearnOpenGL/Source.cpp
with
71 additions
and
52 deletions
LearnOpenGL/OpenGLWrapper.cpp
+
28
−
16
View file @
56d115fe
...
@@ -61,14 +61,8 @@ GLuint Material::get_specularMap()
...
@@ -61,14 +61,8 @@ GLuint Material::get_specularMap()
RenderObject
::
RenderObject
(
Mesh
*
_mesh
)
RenderObject
::
RenderObject
(
Mesh
*
_mesh
)
{
{
translate
=
glm
::
vec3
(
0.0
f
,
0.0
f
,
0.0
f
);
transform
=
Transform
();
rotate
=
glm
::
vec3
(
0.0
f
,
0.0
f
,
0.0
f
);
scale
=
glm
::
vec3
(
1.0
f
,
1.0
f
,
1.0
f
);
mesh
=
_mesh
;
mesh
=
_mesh
;
update_model_matrix
();
update_directional_vector
();
}
}
Material
*
RenderObject
::
get_material
()
Material
*
RenderObject
::
get_material
()
...
@@ -81,12 +75,22 @@ GLuint RenderObject::get_vertex_count()
...
@@ -81,12 +75,22 @@ GLuint RenderObject::get_vertex_count()
return
mesh
->
get_vertex_count
();
return
mesh
->
get_vertex_count
();
}
}
glm
::
mat4
RenderObject
::
get_model_matrix
()
Transform
::
Transform
()
{
translate
=
glm
::
vec3
(
0.0
f
,
0.0
f
,
0.0
f
);
rotate
=
glm
::
vec3
(
0.0
f
,
0.0
f
,
0.0
f
);
scale
=
glm
::
vec3
(
1.0
f
,
1.0
f
,
1.0
f
);
update_model_matrix
();
update_directional_vector
();
}
glm
::
mat4
Transform
::
get_model_matrix
()
{
{
return
model
;
return
model
;
}
}
void
RenderObject
::
update_model_matrix
()
void
Transform
::
update_model_matrix
()
{
{
model
=
glm
::
mat4
(
1.0
f
);
model
=
glm
::
mat4
(
1.0
f
);
model
=
glm
::
translate
(
model
,
translate
);
model
=
glm
::
translate
(
model
,
translate
);
...
@@ -98,7 +102,7 @@ void RenderObject::update_model_matrix()
...
@@ -98,7 +102,7 @@ void RenderObject::update_model_matrix()
model
=
glm
::
scale
(
model
,
scale
);
model
=
glm
::
scale
(
model
,
scale
);
}
}
void
RenderObject
::
update_directional_vector
()
void
Transform
::
update_directional_vector
()
{
{
glm
::
vec3
front
;
glm
::
vec3
front
;
glm
::
vec3
up
;
glm
::
vec3
up
;
...
@@ -115,7 +119,12 @@ void RenderObject::update_directional_vector()
...
@@ -115,7 +119,12 @@ void RenderObject::update_directional_vector()
up
=
glm
::
normalize
(
glm
::
cross
(
right
,
front
));
up
=
glm
::
normalize
(
glm
::
cross
(
right
,
front
));
}
}
void
RenderObject
::
set_translate
(
glm
::
vec3
_translate
)
Transform
*
RenderObject
::
get_transform
()
{
return
&
transform
;
}
void
Transform
::
set_translate
(
glm
::
vec3
_translate
)
{
{
translate
=
_translate
;
translate
=
_translate
;
...
@@ -123,7 +132,7 @@ void RenderObject::set_translate(glm::vec3 _translate)
...
@@ -123,7 +132,7 @@ void RenderObject::set_translate(glm::vec3 _translate)
update_directional_vector
();
update_directional_vector
();
}
}
void
RenderObject
::
set_rotate
(
glm
::
vec3
_rotate
)
void
Transform
::
set_rotate
(
glm
::
vec3
_rotate
)
{
{
rotate
=
_rotate
;
rotate
=
_rotate
;
...
@@ -131,14 +140,14 @@ void RenderObject::set_rotate(glm::vec3 _rotate)
...
@@ -131,14 +140,14 @@ void RenderObject::set_rotate(glm::vec3 _rotate)
update_directional_vector
();
update_directional_vector
();
}
}
void
RenderObject
::
set_scale
(
glm
::
vec3
_scale
)
void
Transform
::
set_scale
(
glm
::
vec3
_scale
)
{
{
scale
=
_scale
;
scale
=
_scale
;
update_model_matrix
();
update_model_matrix
();
}
}
void
RenderObject
::
move
(
glm
::
vec3
_delta
)
void
Transform
::
move
(
glm
::
vec3
_delta
)
{
{
translate
+=
_delta
;
translate
+=
_delta
;
...
@@ -146,7 +155,7 @@ void RenderObject::move(glm::vec3 _delta)
...
@@ -146,7 +155,7 @@ void RenderObject::move(glm::vec3 _delta)
update_directional_vector
();
update_directional_vector
();
}
}
void
RenderObject
::
move
(
glm
::
vec3
_direction
,
glm
::
vec1
_velocity
)
void
Transform
::
move
(
glm
::
vec3
_direction
,
glm
::
vec1
_velocity
)
{
{
translate
+=
glm
::
vec3
(
_velocity
*
_direction
.
x
,
_velocity
*
_direction
.
y
,
_velocity
*
_direction
.
z
);
translate
+=
glm
::
vec3
(
_velocity
*
_direction
.
x
,
_velocity
*
_direction
.
y
,
_velocity
*
_direction
.
z
);
...
@@ -177,6 +186,8 @@ void RenderObject::render(Camera &camera)
...
@@ -177,6 +186,8 @@ void RenderObject::render(Camera &camera)
glm
::
mat4
projection
=
glm
::
perspective
(
glm
::
radians
(
camera
.
Zoom
),
(
float
)
_SCR_WIDTH
/
(
float
)
_SCR_HEIGHT
,
0.1
f
,
500.0
f
);
glm
::
mat4
projection
=
glm
::
perspective
(
glm
::
radians
(
camera
.
Zoom
),
(
float
)
_SCR_WIDTH
/
(
float
)
_SCR_HEIGHT
,
0.1
f
,
500.0
f
);
glm
::
mat4
view
=
camera
.
GetViewMatrix
();
glm
::
mat4
view
=
camera
.
GetViewMatrix
();
glm
::
mat4
model
=
transform
.
get_model_matrix
();
set_uniform_value
(
prog
,
"projection"
,
projection
);
set_uniform_value
(
prog
,
"projection"
,
projection
);
set_uniform_value
(
prog
,
"view"
,
view
);
set_uniform_value
(
prog
,
"view"
,
view
);
set_uniform_value
(
prog
,
"model"
,
model
);
set_uniform_value
(
prog
,
"model"
,
model
);
...
@@ -223,6 +234,7 @@ void RenderObject::projective_render(Camera &camera)
...
@@ -223,6 +234,7 @@ void RenderObject::projective_render(Camera &camera)
glm
::
mat4
projection
=
glm
::
perspective
(
glm
::
radians
(
camera
.
Zoom
),
(
float
)
_SCR_WIDTH
/
(
float
)
_SCR_HEIGHT
,
0.1
f
,
500.0
f
);
glm
::
mat4
projection
=
glm
::
perspective
(
glm
::
radians
(
camera
.
Zoom
),
(
float
)
_SCR_WIDTH
/
(
float
)
_SCR_HEIGHT
,
0.1
f
,
500.0
f
);
glm
::
mat4
view
=
camera
.
GetViewMatrix
();
glm
::
mat4
view
=
camera
.
GetViewMatrix
();
glm
::
mat4
model
=
transform
.
get_model_matrix
();
set_uniform_value
(
prog
,
"projectorBias"
,
bias
);
set_uniform_value
(
prog
,
"projectorBias"
,
bias
);
set_uniform_value
(
prog
,
"projectorProjection"
,
projector_projection
);
set_uniform_value
(
prog
,
"projectorProjection"
,
projector_projection
);
...
@@ -260,7 +272,7 @@ RenderObject *make_render_object(Mesh *mesh)
...
@@ -260,7 +272,7 @@ RenderObject *make_render_object(Mesh *mesh)
RenderObject
*
ro
=
new
RenderObject
(
mesh
);
RenderObject
*
ro
=
new
RenderObject
(
mesh
);
return
ro
;
return
ro
;
}
;
}
GLuint
build_program
(
const
std
::
string
name
)
GLuint
build_program
(
const
std
::
string
name
)
{
{
...
...
This diff is collapsed.
Click to expand it.
LearnOpenGL/OpenGLWrapper.h
+
19
−
10
View file @
56d115fe
...
@@ -50,14 +50,9 @@ public:
...
@@ -50,14 +50,9 @@ public:
GLuint
get_specularMap
();
GLuint
get_specularMap
();
};
};
class
RenderObject
class
Transform
{
{
private:
private:
GLuint
id
;
Mesh
*
mesh
;
Material
*
material
;
glm
::
mat4
model
;
glm
::
mat4
model
;
glm
::
vec3
translate
;
glm
::
vec3
translate
;
...
@@ -72,10 +67,7 @@ private:
...
@@ -72,10 +67,7 @@ private:
void
update_directional_vector
();
void
update_directional_vector
();
public:
public:
RenderObject
(
Mesh
*
_mesh
);
Transform
();
Material
*
get_material
();
GLuint
get_vertex_count
();
glm
::
mat4
get_model_matrix
();
glm
::
mat4
get_model_matrix
();
glm
::
vec3
get_front
();
glm
::
vec3
get_front
();
...
@@ -85,6 +77,23 @@ public:
...
@@ -85,6 +77,23 @@ public:
void
move
(
glm
::
vec3
_delta
);
void
move
(
glm
::
vec3
_delta
);
void
move
(
glm
::
vec3
_direction
,
glm
::
vec1
_velocity
);
void
move
(
glm
::
vec3
_direction
,
glm
::
vec1
_velocity
);
};
class
RenderObject
{
private:
GLuint
id
;
Transform
transform
;
Mesh
*
mesh
;
Material
*
material
;
public:
RenderObject
(
Mesh
*
_mesh
);
Transform
*
get_transform
();
Material
*
get_material
();
GLuint
get_vertex_count
();
void
set_material
(
Material
*
_material
);
void
set_material
(
Material
*
_material
);
...
...
This diff is collapsed.
Click to expand it.
LearnOpenGL/Source.cpp
+
24
−
26
View file @
56d115fe
...
@@ -77,18 +77,11 @@ int main()
...
@@ -77,18 +77,11 @@ int main()
auto
planeMaterial
=
new
Material
(
lightmap
,
magenta
,
transparent
);
auto
planeMaterial
=
new
Material
(
lightmap
,
magenta
,
transparent
);
auto
projectorMaterial
=
new
Material
(
projector_shader
,
wall_tex
,
wall
);
auto
projectorMaterial
=
new
Material
(
projector_shader
,
wall_tex
,
wall
);
auto
projector
=
make_render_object
(
cube
);
{
projector
->
set_translate
(
glm
::
vec3
(
0.0
f
,
10.0
f
,
0.0
f
));
}
{
projector
->
set_material
(
projectorMaterial
);
}
auto
teapot
=
make_render_object
(
make_mesh
(
"teapot.obj"
));
auto
teapot
=
make_render_object
(
make_mesh
(
"teapot.obj"
));
{
{
teapot
->
set_translate
(
glm
::
vec3
(
0.0
f
,
-
10.0
f
,
-
40.0
f
));
auto
transform
=
teapot
->
get_transform
();
teapot
->
set_rotate
(
glm
::
vec3
(
-
90.0
f
,
0.0
f
,
0.0
f
));
transform
->
set_translate
(
glm
::
vec3
(
0.0
f
,
-
10.0
f
,
-
40.0
f
));
transform
->
set_rotate
(
glm
::
vec3
(
-
90.0
f
,
0.0
f
,
0.0
f
));
}
}
{
{
teapot
->
set_material
(
projectorMaterial
);
teapot
->
set_material
(
projectorMaterial
);
...
@@ -96,9 +89,10 @@ int main()
...
@@ -96,9 +89,10 @@ int main()
auto
cube1
=
make_render_object
(
cube
);
auto
cube1
=
make_render_object
(
cube
);
{
{
cube1
->
set_translate
(
glm
::
vec3
(
0
,
-
15
,
-
40
));
auto
transform
=
cube1
->
get_transform
();
cube1
->
set_rotate
(
glm
::
vec3
(
-
90.0
f
,
0.0
f
,
0.0
f
));
transform
->
set_translate
(
glm
::
vec3
(
0
,
-
15
,
-
40
));
cube1
->
set_scale
(
glm
::
vec3
(
10
,
10
,
4
));
transform
->
set_rotate
(
glm
::
vec3
(
-
90.0
f
,
0.0
f
,
0.0
f
));
transform
->
set_scale
(
glm
::
vec3
(
10
,
10
,
4
));
}
}
{
{
cube1
->
set_material
(
cubeMaterial
);
cube1
->
set_material
(
cubeMaterial
);
...
@@ -106,9 +100,10 @@ int main()
...
@@ -106,9 +100,10 @@ int main()
auto
cube2
=
make_render_object
(
cube
);
auto
cube2
=
make_render_object
(
cube
);
{
{
cube2
->
set_translate
(
glm
::
vec3
(
0
,
-
10
,
-
40
));
auto
transform
=
cube2
->
get_transform
();
cube1
->
set_rotate
(
glm
::
vec3
(
-
90.0
f
,
0.0
f
,
0.0
f
));
transform
->
set_translate
(
glm
::
vec3
(
0
,
-
10
,
-
40
));
cube2
->
set_scale
(
glm
::
vec3
(
12
,
12
,
1
));
transform
->
set_rotate
(
glm
::
vec3
(
-
90.0
f
,
0.0
f
,
0.0
f
));
transform
->
set_scale
(
glm
::
vec3
(
12
,
12
,
1
));
}
}
{
{
cube2
->
set_material
(
cubeMaterial
);
cube2
->
set_material
(
cubeMaterial
);
...
@@ -116,7 +111,8 @@ int main()
...
@@ -116,7 +111,8 @@ int main()
auto
plane
=
make_render_object
(
make_mesh
(
"plane.obj"
));
auto
plane
=
make_render_object
(
make_mesh
(
"plane.obj"
));
{
{
plane
->
set_scale
(
glm
::
vec3
(
10
,
10
,
1
));
auto
transform
=
plane
->
get_transform
();
transform
->
set_scale
(
glm
::
vec3
(
10
,
10
,
1
));
}
}
{
{
plane
->
set_material
(
planeMaterial
);
plane
->
set_material
(
planeMaterial
);
...
@@ -124,9 +120,10 @@ int main()
...
@@ -124,9 +120,10 @@ int main()
auto
cube3
=
make_render_object
(
cube
);
auto
cube3
=
make_render_object
(
cube
);
{
{
cube3
->
set_translate
(
glm
::
vec3
(
0.0
f
,
-
20.0
f
,
-
40.0
f
));
auto
transform
=
cube3
->
get_transform
();
cube3
->
set_rotate
(
glm
::
vec3
(
-
90.0
f
,
0.0
f
,
0.0
f
));
transform
->
set_translate
(
glm
::
vec3
(
0.0
f
,
-
20.0
f
,
-
40.0
f
));
cube3
->
set_scale
(
glm
::
vec3
(
50
,
50
,
0.5
));
transform
->
set_rotate
(
glm
::
vec3
(
-
90.0
f
,
0.0
f
,
0.0
f
));
transform
->
set_scale
(
glm
::
vec3
(
50
,
50
,
0.5
));
}
}
{
{
cube3
->
set_material
(
cubeMaterial
);
cube3
->
set_material
(
cubeMaterial
);
...
@@ -134,7 +131,8 @@ int main()
...
@@ -134,7 +131,8 @@ int main()
auto
cube4
=
make_render_object
(
cube
);
auto
cube4
=
make_render_object
(
cube
);
{
{
cube4
->
set_translate
(
glm
::
vec3
(
0.0
f
,
10.0
f
,
0.0
f
));
auto
transform
=
cube4
->
get_transform
();
transform
->
set_translate
(
glm
::
vec3
(
0.0
f
,
10.0
f
,
0.0
f
));
}
}
{
{
cube4
->
set_material
(
cubeMaterial
);
cube4
->
set_material
(
cubeMaterial
);
...
@@ -153,11 +151,11 @@ int main()
...
@@ -153,11 +151,11 @@ int main()
{
{
teapot
->
projective_render
(
camera
);
teapot
->
projective_render
(
camera
);
cube1
->
render
(
camera
);
cube1
->
projective_
render
(
camera
);
cube2
->
render
(
camera
);
cube2
->
projective_
render
(
camera
);
cube3
->
render
(
camera
);
cube3
->
projective_
render
(
camera
);
plane
->
render
(
camera
);
plane
->
projective_
render
(
camera
);
cube4
->
render
(
camera
);
cube4
->
projective_
render
(
camera
);
}
}
glfwSwapBuffers
(
window
);
glfwSwapBuffers
(
window
);
...
...
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