Преглед изворни кода

feat: 跟随时间 自动旋转

nicetry12138 пре 10 месеци
родитељ
комит
cbb550c7fd

+ 2 - 2
图形学/OpenGL学习/src/OpenGLDemo/OpenGLDemo/imgui.ini

@@ -14,7 +14,7 @@ Size=391,97
 Collapsed=0
 
 [Window][Rotate]
-Pos=412,55
-Size=339,163
+Pos=239,11
+Size=500,192
 Collapsed=0
 

+ 6 - 1
图形学/OpenGL学习/src/OpenGLDemo/OpenGLDemo/src/testModule/TestPosition.cpp

@@ -75,6 +75,11 @@ void TestPosition::UpdateLogic(float delayTime)
 	RotateAxis.g = m_RotateY ? 1.0f : 0.0f;
 	RotateAxis.b = m_RotateZ ? 1.0f : 0.0f;
 
+	m_Rotate += delayTime * m_RotateSpeed;
+	if (m_Rotate > 180.0f) {
+		m_Rotate -= 360;
+	}
+
 	m_model = glm::rotate(glm::mat4(1.0f), glm::radians(m_Rotate), RotateAxis);
 	m_view = glm::translate(glm::mat4(1.0f), m_Transition);
 
@@ -110,7 +115,7 @@ void TestPosition::UpdateImGUI(GLFWwindow* window)
 	ImGui::Checkbox("Rotate X", &m_RotateX);
 	ImGui::Checkbox("Rotate Y", &m_RotateY);
 	ImGui::Checkbox("Rotate Z", &m_RotateZ);
-	ImGui::SliderFloat("Rotate Angle", &m_Rotate, -180.0f, 180.0f);
+	ImGui::SliderFloat("Rotate Speed", &m_RotateSpeed, 1.0f, 500);
 	ImGui::SliderFloat3("Camera Location", &m_Transition.r, -5.0f, 5.0f);
 
 	ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate);

+ 3 - 1
图形学/OpenGL学习/src/OpenGLDemo/OpenGLDemo/src/testModule/TestPosition.h

@@ -33,7 +33,9 @@ private:
 
 	glm::vec3 m_Transition = glm::vec3(0.0f, 0.0f, -3.0f);
 
-	float m_Rotate = -45;
+	float m_Rotate = -45.0f;
+	float m_RotateSpeed = 1.0f;
+
 	bool m_RotateX = true;
 	bool m_RotateY = false;
 	bool m_RotateZ = false;