skybocks
@@ -16,7 +16,6 @@ public:
|
|||||||
|
|
||||||
glm::vec3 Forward();
|
glm::vec3 Forward();
|
||||||
glm::vec3 Right();
|
glm::vec3 Right();
|
||||||
glm::quat Orientation();
|
|
||||||
|
|
||||||
float AspectRatio() const { return m_AspectRatio; }
|
float AspectRatio() const { return m_AspectRatio; }
|
||||||
void AspectRatio(float val);
|
void AspectRatio(float val);
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
#include "CubemapTexture.h"
|
||||||
|
|
||||||
|
CubemapTexture::CubemapTexture(char* posXFile, char* negXFile, char* posYFile, char* negYFile, char* posZFile, char* negZFile)
|
||||||
|
{
|
||||||
|
m_TextureFiles[0] = posXFile;
|
||||||
|
m_TextureFiles[1] = negXFile;
|
||||||
|
m_TextureFiles[2] = posYFile;
|
||||||
|
m_TextureFiles[3] = negYFile;
|
||||||
|
m_TextureFiles[4] = posZFile;
|
||||||
|
m_TextureFiles[5] = negZFile;
|
||||||
|
|
||||||
|
Load();
|
||||||
|
}
|
||||||
|
|
||||||
|
CubemapTexture::~CubemapTexture()
|
||||||
|
{
|
||||||
|
//glDeleteTextures(1, &m_Texture);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CubemapTexture::Load()
|
||||||
|
{
|
||||||
|
m_Texture = SOIL_load_OGL_cubemap(
|
||||||
|
m_TextureFiles[0],
|
||||||
|
m_TextureFiles[1],
|
||||||
|
m_TextureFiles[2],
|
||||||
|
m_TextureFiles[3],
|
||||||
|
m_TextureFiles[4],
|
||||||
|
m_TextureFiles[5],
|
||||||
|
SOIL_LOAD_AUTO,
|
||||||
|
SOIL_CREATE_NEW_ID,
|
||||||
|
0);
|
||||||
|
|
||||||
|
if (m_Texture == 0)
|
||||||
|
LOG_ERROR("SOIL cubemap loading error: %s", SOIL_last_result());
|
||||||
|
|
||||||
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CubemapTexture::Bind(GLenum textureUnit)
|
||||||
|
{
|
||||||
|
glActiveTexture(textureUnit);
|
||||||
|
glBindTexture(GL_TEXTURE_CUBE_MAP, m_Texture);
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#ifndef CubemapTexture_h__
|
||||||
|
#define CubemapTexture_h__
|
||||||
|
|
||||||
|
#include "OpenGL.h"
|
||||||
|
#include "glerror.h"
|
||||||
|
#include <SOIL.h>
|
||||||
|
|
||||||
|
#include "logging.h"
|
||||||
|
|
||||||
|
class CubemapTexture
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CubemapTexture() { }
|
||||||
|
CubemapTexture(
|
||||||
|
char* posXFile,
|
||||||
|
char* negXFile,
|
||||||
|
char* posYFile,
|
||||||
|
char* negYFile,
|
||||||
|
char* posZFile,
|
||||||
|
char* negZFile);
|
||||||
|
~CubemapTexture();
|
||||||
|
|
||||||
|
void Load();
|
||||||
|
void Bind(GLenum textureSlot);
|
||||||
|
|
||||||
|
private:
|
||||||
|
char* m_TextureFiles[6];
|
||||||
|
GLuint m_Texture;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CubemapTexture_h__
|
||||||
@@ -98,6 +98,7 @@
|
|||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="Camera.cpp" />
|
<ClCompile Include="Camera.cpp" />
|
||||||
|
<ClCompile Include="CubemapTexture.cpp" />
|
||||||
<ClCompile Include="Engine.h" />
|
<ClCompile Include="Engine.h" />
|
||||||
<ClCompile Include="Frame.cpp" />
|
<ClCompile Include="Frame.cpp" />
|
||||||
<ClCompile Include="GameFrame.cpp" />
|
<ClCompile Include="GameFrame.cpp" />
|
||||||
@@ -109,6 +110,7 @@
|
|||||||
<ClCompile Include="OBJ.cpp" />
|
<ClCompile Include="OBJ.cpp" />
|
||||||
<ClCompile Include="Renderer.cpp" />
|
<ClCompile Include="Renderer.cpp" />
|
||||||
<ClCompile Include="ShaderProgram.cpp" />
|
<ClCompile Include="ShaderProgram.cpp" />
|
||||||
|
<ClCompile Include="Skybox.cpp" />
|
||||||
<ClCompile Include="Systems\CollisionSystem.cpp" />
|
<ClCompile Include="Systems\CollisionSystem.cpp" />
|
||||||
<ClCompile Include="Texture.cpp" />
|
<ClCompile Include="Texture.cpp" />
|
||||||
<ClCompile Include="TextFrame.cpp" />
|
<ClCompile Include="TextFrame.cpp" />
|
||||||
@@ -125,6 +127,7 @@
|
|||||||
<ClInclude Include="Color.h" />
|
<ClInclude Include="Color.h" />
|
||||||
<ClInclude Include="Component.h" />
|
<ClInclude Include="Component.h" />
|
||||||
<ClInclude Include="Components\Camera.h" />
|
<ClInclude Include="Components\Camera.h" />
|
||||||
|
<ClInclude Include="CubemapTexture.h" />
|
||||||
<ClInclude Include="Factory.h" />
|
<ClInclude Include="Factory.h" />
|
||||||
<ClInclude Include="Components\Bounds.h" />
|
<ClInclude Include="Components\Bounds.h" />
|
||||||
<ClInclude Include="Components\Collision.h" />
|
<ClInclude Include="Components\Collision.h" />
|
||||||
@@ -153,6 +156,7 @@
|
|||||||
<ClInclude Include="OpenGL.h" />
|
<ClInclude Include="OpenGL.h" />
|
||||||
<ClInclude Include="Renderer.h" />
|
<ClInclude Include="Renderer.h" />
|
||||||
<ClInclude Include="ShaderProgram.h" />
|
<ClInclude Include="ShaderProgram.h" />
|
||||||
|
<ClInclude Include="Skybox.h" />
|
||||||
<ClInclude Include="Systems\InputSystem.h" />
|
<ClInclude Include="Systems\InputSystem.h" />
|
||||||
<ClInclude Include="System.h" />
|
<ClInclude Include="System.h" />
|
||||||
<ClInclude Include="Systems\CollisionSystem.h" />
|
<ClInclude Include="Systems\CollisionSystem.h" />
|
||||||
@@ -171,6 +175,8 @@
|
|||||||
<None Include="Shaders\Fragment.glsl" />
|
<None Include="Shaders\Fragment.glsl" />
|
||||||
<None Include="Shaders\Normals.frag.glsl" />
|
<None Include="Shaders\Normals.frag.glsl" />
|
||||||
<None Include="Shaders\Normals.geo.glsl" />
|
<None Include="Shaders\Normals.geo.glsl" />
|
||||||
|
<None Include="Shaders\Skybox.frag.glsl" />
|
||||||
|
<None Include="Shaders\Skybox.vert.glsl" />
|
||||||
<None Include="Shaders\VisualizeDepth.frag.glsl" />
|
<None Include="Shaders\VisualizeDepth.frag.glsl" />
|
||||||
<None Include="Shaders\VisualizeDepth.vert.glsl" />
|
<None Include="Shaders\VisualizeDepth.vert.glsl" />
|
||||||
<None Include="Shaders\ShadowMap.frag.glsl" />
|
<None Include="Shaders\ShadowMap.frag.glsl" />
|
||||||
|
|||||||
@@ -47,6 +47,8 @@
|
|||||||
<ClCompile Include="OBJ.cpp" />
|
<ClCompile Include="OBJ.cpp" />
|
||||||
<ClCompile Include="main.cpp" />
|
<ClCompile Include="main.cpp" />
|
||||||
<ClCompile Include="GameWorld.cpp" />
|
<ClCompile Include="GameWorld.cpp" />
|
||||||
|
<ClCompile Include="Skybox.cpp" />
|
||||||
|
<ClCompile Include="CubemapTexture.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Component.h" />
|
<ClInclude Include="Component.h" />
|
||||||
@@ -148,6 +150,8 @@
|
|||||||
<ClInclude Include="Camera.h" />
|
<ClInclude Include="Camera.h" />
|
||||||
<ClInclude Include="OBJ.h" />
|
<ClInclude Include="OBJ.h" />
|
||||||
<ClInclude Include="OpenGL.h" />
|
<ClInclude Include="OpenGL.h" />
|
||||||
|
<ClInclude Include="Skybox.h" />
|
||||||
|
<ClInclude Include="CubemapTexture.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Shaders\Fragment.glsl">
|
<None Include="Shaders\Fragment.glsl">
|
||||||
@@ -180,6 +184,12 @@
|
|||||||
<None Include="Shaders\AABB.frag.glsl">
|
<None Include="Shaders\AABB.frag.glsl">
|
||||||
<Filter>Shaders</Filter>
|
<Filter>Shaders</Filter>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="Shaders\Skybox.frag.glsl">
|
||||||
|
<Filter>Shaders</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="Shaders\Skybox.vert.glsl">
|
||||||
|
<Filter>Shaders</Filter>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Filter Include="Systems">
|
<Filter Include="Systems">
|
||||||
|
|||||||
@@ -108,12 +108,12 @@ void GameWorld::Initialize()
|
|||||||
bounds->VolumeVector = glm::vec3(4.f, 0.7f, 1);
|
bounds->VolumeVector = glm::vec3(4.f, 0.7f, 1);
|
||||||
soundEmitter = AddComponent<Components::SoundEmitter>(m_Player, "SoundEmitter");
|
soundEmitter = AddComponent<Components::SoundEmitter>(m_Player, "SoundEmitter");
|
||||||
soundEmitter->Loop = true;
|
soundEmitter->Loop = true;
|
||||||
//soundEmitter->MaxDistance = FLT_MAX;
|
//soundEmitter->MaxDistance = 10;
|
||||||
soundEmitter->ReferenceDistance = 10;
|
soundEmitter->ReferenceDistance = 10;
|
||||||
soundEmitter->Gain = 1;
|
soundEmitter->Gain = 1;
|
||||||
soundEmitter->Pitch = 1;
|
soundEmitter->Pitch = 1;
|
||||||
soundEmitter->Path = "Sounds/hallelujah.wav";
|
soundEmitter->Path = "Sounds/hallelujah.wav";
|
||||||
GetSystem<Systems::SoundSystem>("SoundSystem")->PlaySound(soundEmitter);
|
//GetSystem<Systems::SoundSystem>("SoundSystem")->PlaySound(soundEmitter);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -99,6 +99,13 @@ void Renderer::LoadContent()
|
|||||||
m_ShaderProgramDebugAABB.Compile();
|
m_ShaderProgramDebugAABB.Compile();
|
||||||
m_ShaderProgramDebugAABB.Link();
|
m_ShaderProgramDebugAABB.Link();
|
||||||
|
|
||||||
|
m_ShaderProgramSkybox.AddShader(std::shared_ptr<Shader>(new VertexShader("Shaders/Skybox.vert.glsl")));
|
||||||
|
m_ShaderProgramSkybox.AddShader(std::shared_ptr<Shader>(new FragmentShader("Shaders/Skybox.frag.glsl")));
|
||||||
|
m_ShaderProgramSkybox.Compile();
|
||||||
|
m_ShaderProgramSkybox.Link();
|
||||||
|
|
||||||
|
m_Skybox = std::make_shared<Skybox>(CubemapTexture("Textures/right.jpg", "Textures/left.jpg", "Textures/top.jpg", "Textures/bottom.jpg", "Textures/front.jpg", "Textures/back.jpg"));
|
||||||
|
|
||||||
m_DebugAABB = CreateAABB();
|
m_DebugAABB = CreateAABB();
|
||||||
m_ScreenQuad = CreateQuad();
|
m_ScreenQuad = CreateQuad();
|
||||||
CreateShadowMap(m_ShadowMapRes);
|
CreateShadowMap(m_ShadowMapRes);
|
||||||
@@ -133,6 +140,7 @@ void Renderer::Draw(double dt)
|
|||||||
{
|
{
|
||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
|
|
||||||
|
DrawSkybox();
|
||||||
DrawShadowMap();
|
DrawShadowMap();
|
||||||
DrawScene();
|
DrawScene();
|
||||||
|
|
||||||
@@ -167,13 +175,26 @@ void Renderer::Draw(double dt)
|
|||||||
glfwSwapBuffers(m_Window);
|
glfwSwapBuffers(m_Window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::DrawScene()
|
void Renderer::DrawSkybox()
|
||||||
{
|
{
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||||
glViewport(0, 0, WIDTH, HEIGHT);
|
glViewport(0, 0, WIDTH, HEIGHT);
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
glClearColor(1.0f, 1.0f, 0.0f, 1.0f);
|
m_ShaderProgramSkybox.Bind();
|
||||||
|
glm::mat4 cameraMatrix = m_Camera->ProjectionMatrix() * glm::toMat4(m_Camera->Orientation());
|
||||||
|
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgramSkybox.GetHandle(), "MVP"), 1, GL_FALSE, glm::value_ptr(cameraMatrix));
|
||||||
|
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||||
|
m_Skybox->Draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Renderer::DrawScene()
|
||||||
|
{
|
||||||
|
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||||
|
glViewport(0, 0, WIDTH, HEIGHT);
|
||||||
|
|
||||||
|
glClear(GL_DEPTH_BUFFER_BIT);
|
||||||
|
//glClearColor(1.0f, 1.0f, 0.0f, 1.0f);
|
||||||
|
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
@@ -461,6 +482,33 @@ GLuint Renderer::CreateAABB()
|
|||||||
return vao;
|
return vao;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GLuint Renderer::CreateSkybox()
|
||||||
|
{
|
||||||
|
glm::vec3 skyBoxVertices[] =
|
||||||
|
{
|
||||||
|
glm::vec3( 1.0f, -1.0f, -1.0f), glm::vec3( 1.0f, -1.0f, 1.0f), glm::vec3( 1.0f, 1.0f, 1.0f), glm::vec3( 1.0f, 1.0f, 1.0f), glm::vec3( 1.0f, 1.0f, -1.0f), glm::vec3( 1.0f, -1.0f, -1.0f),
|
||||||
|
glm::vec3(-1.0f, -1.0f, 1.0f), glm::vec3(-1.0f, -1.0f, -1.0f), glm::vec3(-1.0f, 1.0f, -1.0f), glm::vec3(-1.0f, 1.0f, -1.0f), glm::vec3(-1.0f, 1.0f, 1.0f), glm::vec3(-1.0f, -1.0f, 1.0f),
|
||||||
|
glm::vec3(-1.0f, 1.0f, -1.0f), glm::vec3( 1.0f, 1.0f, -1.0f), glm::vec3( 1.0f, 1.0f, 1.0f), glm::vec3( 1.0f, 1.0f, 1.0f), glm::vec3(-1.0f, 1.0f, 1.0f), glm::vec3(-1.0f, 1.0f, -1.0f),
|
||||||
|
glm::vec3(-1.0f, -1.0f, 1.0f), glm::vec3( 1.0f, -1.0f, 1.0f), glm::vec3( 1.0f, -1.0f, -1.0f), glm::vec3( 1.0f, -1.0f, -1.0f), glm::vec3(-1.0f, -1.0f, -1.0f), glm::vec3(-1.0f, -1.0f, 1.0f),
|
||||||
|
glm::vec3( 1.0f, -1.0f, 1.0f), glm::vec3(-1.0f, -1.0f, 1.0f), glm::vec3(-1.0f, 1.0f, 1.0f), glm::vec3(-1.0f, 1.0f, 1.0f), glm::vec3( 1.0f, 1.0f, 1.0f), glm::vec3( 1.0f, -1.0f, 1.0f),
|
||||||
|
glm::vec3(-1.0f, -1.0f, -1.0f), glm::vec3( 1.0f, -1.0f, -1.0f), glm::vec3( 1.0f, 1.0f, -1.0f), glm::vec3( 1.0f, 1.0f, -1.0f), glm::vec3(-1.0f, 1.0f, -1.0f), glm::vec3(-1.0f, -1.0f, -1.0f)
|
||||||
|
};
|
||||||
|
|
||||||
|
GLuint vbo, vao;
|
||||||
|
glGenBuffers(1, &vbo);
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, sizeof(skyBoxVertices), skyBoxVertices, GL_STATIC_DRAW);
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
|
|
||||||
|
glGenVertexArrays(1, &vao);
|
||||||
|
glBindVertexArray(vao);
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
||||||
|
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
|
||||||
|
glEnableVertexAttribArray(0);
|
||||||
|
glBindVertexArray(0);
|
||||||
|
|
||||||
|
return vao;
|
||||||
|
}
|
||||||
void Renderer::ClearStuff()
|
void Renderer::ClearStuff()
|
||||||
{
|
{
|
||||||
AABBsToRender.clear();
|
AABBsToRender.clear();
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include "ShaderProgram.h"
|
#include "ShaderProgram.h"
|
||||||
#include "Model.h"
|
#include "Model.h"
|
||||||
#include "Components/PointLight.h"
|
#include "Components/PointLight.h"
|
||||||
|
#include "Skybox.h"
|
||||||
|
|
||||||
class Renderer
|
class Renderer
|
||||||
{
|
{
|
||||||
@@ -71,6 +72,9 @@ public:
|
|||||||
void DrawWireframe(bool val) { m_DrawWireframe = val; }
|
void DrawWireframe(bool val) { m_DrawWireframe = val; }
|
||||||
bool DrawBounds() const { return m_DrawBounds; }
|
bool DrawBounds() const { return m_DrawBounds; }
|
||||||
void DrawBounds(bool val) { m_DrawBounds = val; }
|
void DrawBounds(bool val) { m_DrawBounds = val; }
|
||||||
|
void DrawSkybox();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GLFWwindow* m_Window;
|
GLFWwindow* m_Window;
|
||||||
@@ -81,6 +85,8 @@ private:
|
|||||||
bool m_DrawWireframe;
|
bool m_DrawWireframe;
|
||||||
bool m_DrawBounds;
|
bool m_DrawBounds;
|
||||||
|
|
||||||
|
std::shared_ptr<Skybox> m_Skybox;
|
||||||
|
|
||||||
int m_ShadowMapRes;
|
int m_ShadowMapRes;
|
||||||
glm::vec3 m_SunPosition;
|
glm::vec3 m_SunPosition;
|
||||||
glm::vec3 m_SunTarget;
|
glm::vec3 m_SunTarget;
|
||||||
@@ -98,6 +104,7 @@ private:
|
|||||||
ShaderProgram m_ShaderProgramShadows;
|
ShaderProgram m_ShaderProgramShadows;
|
||||||
ShaderProgram m_ShaderProgramShadowsDrawDepth;
|
ShaderProgram m_ShaderProgramShadowsDrawDepth;
|
||||||
ShaderProgram m_ShaderProgramDebugAABB;
|
ShaderProgram m_ShaderProgramDebugAABB;
|
||||||
|
ShaderProgram m_ShaderProgramSkybox;
|
||||||
|
|
||||||
void ClearStuff();
|
void ClearStuff();
|
||||||
void DrawScene();
|
void DrawScene();
|
||||||
@@ -107,6 +114,7 @@ private:
|
|||||||
GLuint CreateQuad();
|
GLuint CreateQuad();
|
||||||
void DrawDebugShadowMap();
|
void DrawDebugShadowMap();
|
||||||
GLuint CreateAABB();
|
GLuint CreateAABB();
|
||||||
|
GLuint CreateSkybox(void);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#version 430
|
||||||
|
|
||||||
|
uniform samplerCube CubemapTexture;
|
||||||
|
|
||||||
|
in VertexData {
|
||||||
|
vec3 TextureCoord;
|
||||||
|
} Input;
|
||||||
|
|
||||||
|
out vec4 FragColor;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
FragColor = texture(CubemapTexture, Input.TextureCoord);
|
||||||
|
//FragColor = vec4(1.0, 1.0, 1.0, 0.0);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#version 430
|
||||||
|
|
||||||
|
uniform mat4 MVP;
|
||||||
|
|
||||||
|
layout(location = 0) in vec3 Position;
|
||||||
|
|
||||||
|
out VertexData {
|
||||||
|
vec3 TextureCoord;
|
||||||
|
} Output;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_Position = MVP * vec4(Position, 1.0);
|
||||||
|
Output.TextureCoord = Position;
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
#include "Skybox.h"
|
||||||
|
|
||||||
|
Skybox::Skybox(CubemapTexture cubemap)
|
||||||
|
{
|
||||||
|
m_Cubemap = cubemap;
|
||||||
|
|
||||||
|
float cubeVertices[] = {
|
||||||
|
-1.0f, -1.0f, -1.0f,
|
||||||
|
1.0f, -1.0f, -1.0f,
|
||||||
|
1.0f, 1.0f, -1.0f,
|
||||||
|
-1.0f, 1.0f, -1.0f,
|
||||||
|
|
||||||
|
-1.0f, -1.0f, 1.0f,
|
||||||
|
1.0f, -1.0f, 1.0f,
|
||||||
|
1.0f, 1.0f, 1.0f,
|
||||||
|
-1.0f, 1.0f, 1.0f,
|
||||||
|
};
|
||||||
|
//std::copy(cubeVertices, cubeVertices + (3*8 - 1), m_CubeVertices);
|
||||||
|
|
||||||
|
unsigned int cubeIndices[] = {
|
||||||
|
// Back
|
||||||
|
0, 2, 3,
|
||||||
|
0, 1, 2,
|
||||||
|
|
||||||
|
// Right
|
||||||
|
1, 6, 2,
|
||||||
|
1, 5, 6,
|
||||||
|
|
||||||
|
// Front
|
||||||
|
5, 7, 6,
|
||||||
|
5, 4, 7,
|
||||||
|
|
||||||
|
// Left
|
||||||
|
4, 3, 7,
|
||||||
|
4, 0, 3,
|
||||||
|
|
||||||
|
// Top
|
||||||
|
3, 6, 7,
|
||||||
|
3, 2, 6,
|
||||||
|
|
||||||
|
// Bottom
|
||||||
|
4, 1, 0,
|
||||||
|
4, 5, 1,
|
||||||
|
};
|
||||||
|
//std::copy(cubeIndices, cubeIndices + (3*12 - 1), m_CubeIndices);
|
||||||
|
|
||||||
|
GLuint vbo;
|
||||||
|
glGenBuffers(1, &vbo);
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, 3 * 8 * sizeof(float), cubeVertices, GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
glGenBuffers(1, &ibo);
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
|
||||||
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, 3 * 12 * sizeof(int), cubeIndices, GL_STATIC_DRAW);
|
||||||
|
glGenVertexArrays(1, &vao);
|
||||||
|
glBindVertexArray(vao);
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
||||||
|
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
|
||||||
|
glEnableVertexAttribArray(0);
|
||||||
|
|
||||||
|
GLERROR("");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Skybox::~Skybox()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Skybox::Draw()
|
||||||
|
{
|
||||||
|
m_Cubemap.Bind(GL_TEXTURE0);
|
||||||
|
|
||||||
|
glBindVertexArray(vao);
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
|
||||||
|
glDepthMask(GL_FALSE);
|
||||||
|
glDrawElements(GL_TRIANGLES, 3 * 12, GL_UNSIGNED_INT, 0);
|
||||||
|
glDepthMask(GL_TRUE);
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#ifndef Skybox_h__
|
||||||
|
#define Skybox_h__
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include "OpenGL.h"
|
||||||
|
#include "logging.h"
|
||||||
|
#include "glerror.h"
|
||||||
|
#include "CubemapTexture.h"
|
||||||
|
|
||||||
|
class Skybox
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Skybox(CubemapTexture cubemap);
|
||||||
|
~Skybox();
|
||||||
|
|
||||||
|
void Draw();
|
||||||
|
|
||||||
|
private:
|
||||||
|
CubemapTexture m_Cubemap;
|
||||||
|
|
||||||
|
GLuint ibo;
|
||||||
|
GLuint vao;
|
||||||
|
|
||||||
|
float m_CubeVertices[3 * 8];
|
||||||
|
int m_CubeIndices[1];
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // Skybox_h__
|
||||||
@@ -32,7 +32,7 @@ void Systems::LevelGenerationSystem::SpawnObstacle()
|
|||||||
|
|
||||||
sound->Loop = true;
|
sound->Loop = true;
|
||||||
sound->Gain = 1.f;
|
sound->Gain = 1.f;
|
||||||
sound->ReferenceDistance = 15.f;
|
sound->ReferenceDistance = 4.f;
|
||||||
m_World->GetSystem<Systems::SoundSystem>("SoundSystem")->PlaySound(sound, "Sounds/hum.wav");
|
m_World->GetSystem<Systems::SoundSystem>("SoundSystem")->PlaySound(sound, "Sounds/hum.wav");
|
||||||
|
|
||||||
if(typeRandom >= 0 && typeRandom < 2) // Mountain stuff :D
|
if(typeRandom >= 0 && typeRandom < 2) // Mountain stuff :D
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ ALuint Systems::SoundSystem::CreateSource()
|
|||||||
ALuint source;
|
ALuint source;
|
||||||
alGenSources((ALuint)1, &source);
|
alGenSources((ALuint)1, &source);
|
||||||
|
|
||||||
alDopplerFactor(2.f); // Numbers greater than 1 will increase Doppler effect, numbers lower than 1 will decrease the Doppler effect
|
alDopplerFactor(1); // Numbers greater than 1 will increase Doppler effect, numbers lower than 1 will decrease the Doppler effect
|
||||||
alDopplerVelocity(350.f); // Defines the velocity of the sound
|
alDopplerVelocity(350.f); // Defines the velocity of the sound
|
||||||
|
|
||||||
return source;
|
return source;
|
||||||
|
|||||||
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 361 KiB |
|
After Width: | Height: | Size: 157 KiB |
|
After Width: | Height: | Size: 364 KiB |
|
After Width: | Height: | Size: 360 KiB |
|
After Width: | Height: | Size: 363 KiB |
|
After Width: | Height: | Size: 489 KiB |