make ship movement independent from frames

This commit is contained in:
Szymon Szczubkowski 2024-01-31 00:53:17 +01:00
parent a82556f390
commit dcd9359ac4
7 changed files with 28 additions and 7 deletions

View File

@ -37,6 +37,8 @@
<ClInclude Include="src\Texture.h" /> <ClInclude Include="src\Texture.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="shaders\part.frag" />
<None Include="shaders\part.vert" />
<None Include="shaders\pbr.frag" /> <None Include="shaders\pbr.frag" />
<None Include="shaders\pbr.vert" /> <None Include="shaders\pbr.vert" />
<None Include="shaders\sun.frag" /> <None Include="shaders\sun.frag" />

View File

@ -103,5 +103,11 @@
<None Include="shaders\sun.vert"> <None Include="shaders\sun.vert">
<Filter>Shader Files</Filter> <Filter>Shader Files</Filter>
</None> </None>
<None Include="shaders\part.frag">
<Filter>Shader Files</Filter>
</None>
<None Include="shaders\part.vert">
<Filter>Shader Files</Filter>
</None>
</ItemGroup> </ItemGroup>
</Project> </Project>

0
cw_8/shaders/part.frag Normal file
View File

0
cw_8/shaders/part.vert Normal file
View File

View File

@ -12,6 +12,7 @@
GLuint program; GLuint program;
GLuint programSun; GLuint programSun;
GLuint programParticle;
Core::Shader_Loader shaderLoader; Core::Shader_Loader shaderLoader;
@ -82,12 +83,17 @@ glm::vec3 cameraDir;
glm::vec3 spaceshipPos = glm::vec3(-4.0f, 0.0f, 0.0f); glm::vec3 spaceshipPos = glm::vec3(-4.0f, 0.0f, 0.0f);
glm::vec3 spaceshipDir = glm::vec3(1.0f, 0.0f, 0.0f); glm::vec3 spaceshipDir = glm::vec3(1.0f, 0.0f, 0.0f);
float lastTime = -1.f;
float deltaTime = 0.f;
//declarations of functions //declarations of functions
void loadModelToContext(std::string path, Core::RenderContext& context); void loadModelToContext(std::string path, Core::RenderContext& context);
void framebuffer_size_callback(GLFWwindow* window, int width, int height); void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow* window); void processInput(GLFWwindow* window);
void shutdown(GLFWwindow* window); void shutdown(GLFWwindow* window);
void updateDeltaTime(float time);
glm::mat4 createPerspectiveMatrix(); glm::mat4 createPerspectiveMatrix();
glm::mat4 createCameraMatrix(); glm::mat4 createCameraMatrix();
@ -102,6 +108,7 @@ void init(GLFWwindow* window)
program = shaderLoader.CreateProgram("shaders/pbr.vert", "shaders/pbr.frag"); program = shaderLoader.CreateProgram("shaders/pbr.vert", "shaders/pbr.frag");
programSun = shaderLoader.CreateProgram("shaders/sun.vert", "shaders/sun.frag"); programSun = shaderLoader.CreateProgram("shaders/sun.vert", "shaders/sun.frag");
//programParticle = shaderLoader.CreateProgram("shaders/part.vert", "shaders/part.frag");
//load models here //load models here
@ -168,6 +175,7 @@ void renderScene(GLFWwindow* window){
glUseProgram(program); glUseProgram(program);
float time = glfwGetTime(); float time = glfwGetTime();
updateDeltaTime(time);
//desired objects go here //desired objects go here
drawObjectSun(sunContext, glm::scale(glm::vec3(0.1f)) * glm::eulerAngleY(time/10)); drawObjectSun(sunContext, glm::scale(glm::vec3(0.1f)) * glm::eulerAngleY(time/10));
@ -208,7 +216,7 @@ void processInput(GLFWwindow* window)
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window, true); glfwSetWindowShouldClose(window, true);
float cameraSpeed = 0.1f; float cameraSpeed = 0.1f * deltaTime * 30;
if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS)
spaceshipPos += cameraSpeed * spaceshipDir; spaceshipPos += cameraSpeed * spaceshipDir;
if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS)
@ -331,4 +339,15 @@ glm::mat4 createCameraMatrix()
glm::mat4 cameraMatrix = cameraRotrationMatrix * glm::translate(-cameraPos); glm::mat4 cameraMatrix = cameraRotrationMatrix * glm::translate(-cameraPos);
return cameraMatrix; return cameraMatrix;
}
void updateDeltaTime(float time) {
if (lastTime < 0) {
lastTime = time;
return;
}
deltaTime = time - lastTime;
if (deltaTime > 0.1) deltaTime = 0.1;
lastTime = time;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 MiB

After

Width:  |  Height:  |  Size: 24 MiB

View File

@ -5,8 +5,6 @@ VisualStudioVersion = 17.1.32319.34
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grk-cw8", "cw_8\grk-cw8.vcxproj", "{6D813233-7D21-4888-944E-8E3CCAC3EFD3}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grk-cw8", "cw_8\grk-cw8.vcxproj", "{6D813233-7D21-4888-944E-8E3CCAC3EFD3}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grk-cw4", "..\cw 4\grk-cw4.vcxproj", "{D7858112-9412-4E7E-AB73-A911604592EC}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86 Debug|x86 = Debug|x86
@ -17,10 +15,6 @@ Global
{6D813233-7D21-4888-944E-8E3CCAC3EFD3}.Debug|x86.Build.0 = Debug|Win32 {6D813233-7D21-4888-944E-8E3CCAC3EFD3}.Debug|x86.Build.0 = Debug|Win32
{6D813233-7D21-4888-944E-8E3CCAC3EFD3}.Release|x86.ActiveCfg = Release|Win32 {6D813233-7D21-4888-944E-8E3CCAC3EFD3}.Release|x86.ActiveCfg = Release|Win32
{6D813233-7D21-4888-944E-8E3CCAC3EFD3}.Release|x86.Build.0 = Release|Win32 {6D813233-7D21-4888-944E-8E3CCAC3EFD3}.Release|x86.Build.0 = Release|Win32
{D7858112-9412-4E7E-AB73-A911604592EC}.Debug|x86.ActiveCfg = Debug|Win32
{D7858112-9412-4E7E-AB73-A911604592EC}.Debug|x86.Build.0 = Debug|Win32
{D7858112-9412-4E7E-AB73-A911604592EC}.Release|x86.ActiveCfg = Release|Win32
{D7858112-9412-4E7E-AB73-A911604592EC}.Release|x86.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE