feat(OpenGL-hello): rotate
This commit is contained in:
parent
10e78fa03f
commit
7a570f83d2
3 changed files with 20 additions and 4 deletions
|
@ -106,7 +106,11 @@ public:
|
||||||
{
|
{
|
||||||
glUniform4f(glGetUniformLocation(ID, name.c_str()), value1, value2, value3, value4);
|
glUniform4f(glGetUniformLocation(ID, name.c_str()), value1, value2, value3, value4);
|
||||||
}
|
}
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
void setMat4(const std::string &name, float* value) const
|
||||||
|
{
|
||||||
|
glUniformMatrix4fv(glGetUniformLocation(ID, name.c_str()), 1, GL_FALSE, value);
|
||||||
|
}
|
||||||
private:
|
private:
|
||||||
// utility function for checking shader compilation/linking errors.
|
// utility function for checking shader compilation/linking errors.
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
#include <GLFW/glfw3.h>
|
#include <GLFW/glfw3.h>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <glm/glm.hpp>
|
||||||
|
#include <glm/gtc/matrix_transform.hpp>
|
||||||
|
#include <glm/gtc/type_ptr.hpp>
|
||||||
|
|
||||||
// 四边形顶点
|
// 四边形顶点
|
||||||
float vertices[] = {
|
float vertices[] = {
|
||||||
|
@ -24,7 +27,7 @@ void framebuffer_size_callback(GLFWwindow *window, int width, int height);
|
||||||
void processInput(GLFWwindow *window);
|
void processInput(GLFWwindow *window);
|
||||||
|
|
||||||
// settings
|
// settings
|
||||||
const unsigned int SCR_WIDTH = 800;
|
const unsigned int SCR_WIDTH = 600;
|
||||||
const unsigned int SCR_HEIGHT = 600;
|
const unsigned int SCR_HEIGHT = 600;
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
@ -37,7 +40,7 @@ int main() {
|
||||||
// glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
// glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
||||||
|
|
||||||
// 创建窗口
|
// 创建窗口
|
||||||
GLFWwindow *window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
|
GLFWwindow *window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
|
||||||
if (window == NULL) {
|
if (window == NULL) {
|
||||||
std::cout << "Failed to create GLFW window" << std::endl;
|
std::cout << "Failed to create GLFW window" << std::endl;
|
||||||
glfwTerminate();
|
glfwTerminate();
|
||||||
|
@ -144,6 +147,7 @@ int main() {
|
||||||
// 绑定纹理
|
// 绑定纹理
|
||||||
shader.setInt("texture1", 0);
|
shader.setInt("texture1", 0);
|
||||||
shader.setInt("texture2", 1);
|
shader.setInt("texture2", 1);
|
||||||
|
// 设置变换矩阵
|
||||||
|
|
||||||
// 循环渲染
|
// 循环渲染
|
||||||
while (!glfwWindowShouldClose(window)) {
|
while (!glfwWindowShouldClose(window)) {
|
||||||
|
@ -162,6 +166,12 @@ int main() {
|
||||||
|
|
||||||
// 绘制三角形
|
// 绘制三角形
|
||||||
shader.use();
|
shader.use();
|
||||||
|
|
||||||
|
glm::mat4 trans(1.0f);
|
||||||
|
trans = glm::translate(trans,glm::vec3(0.5,-0.5,0.0));
|
||||||
|
trans = glm::rotate(trans, (float)glfwGetTime(), glm::vec3(0.0, 0.5, 0.5));
|
||||||
|
trans = glm::scale(trans, glm::vec3(0.5, 0.5, 0.5));
|
||||||
|
shader.setMat4("trans",glm::value_ptr(trans));
|
||||||
glBindVertexArray(VAO);
|
glBindVertexArray(VAO);
|
||||||
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
|
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,11 @@ layout (location = 2) in vec2 aTexCoord;
|
||||||
out vec3 ourColor;
|
out vec3 ourColor;
|
||||||
out vec2 TexCoord;
|
out vec2 TexCoord;
|
||||||
|
|
||||||
|
uniform mat4 trans;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position = vec4(aPos, 1.0);
|
gl_Position = trans * vec4(aPos, 1.0);
|
||||||
ourColor = aColor;
|
ourColor = aColor;
|
||||||
TexCoord = aTexCoord;
|
TexCoord = aTexCoord;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue