Buffer Layout abstraction
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,10 @@
|
|||||||
Main.cpp
|
Main.cpp
|
||||||
|
C:\dev\Glfw_Practice\c++\Window_practice\Window_practice\src\VertexBufferLayout.h(5,10): warning C4067: unexpected tokens following preprocessor directive - expected a newline
|
||||||
|
Rernderer.cpp
|
||||||
|
VertexArray.cpp
|
||||||
|
C:\dev\Glfw_Practice\c++\Window_practice\Window_practice\src\VertexBufferLayout.h(5,10): warning C4067: unexpected tokens following preprocessor directive - expected a newline
|
||||||
|
Generating Code...
|
||||||
|
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
|
||||||
|
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
|
||||||
|
glew32s.lib(glew.obj) : warning LNK4099: PDB 'vc120.pdb' was not found with 'glew32s.lib(glew.obj)' or at 'C:\dev\Glfw_Practice\c++\Window_practice\Debug\vc120.pdb'; linking object as if no debug info
|
||||||
Window_practice.vcxproj -> C:\dev\Glfw_Practice\c++\Window_practice\Debug\Window_practice.exe
|
Window_practice.vcxproj -> C:\dev\Glfw_Practice\c++\Window_practice\Debug\Window_practice.exe
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -148,13 +148,16 @@
|
|||||||
<ClCompile Include="src\IndexBuffer.cpp" />
|
<ClCompile Include="src\IndexBuffer.cpp" />
|
||||||
<ClCompile Include="src\Main.cpp" />
|
<ClCompile Include="src\Main.cpp" />
|
||||||
<ClCompile Include="src\Rernderer.cpp" />
|
<ClCompile Include="src\Rernderer.cpp" />
|
||||||
|
<ClCompile Include="src\VertexArray.cpp" />
|
||||||
<ClCompile Include="src\VertexBuffer.cpp" />
|
<ClCompile Include="src\VertexBuffer.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="src\IndexBuffer.h" />
|
<ClInclude Include="src\IndexBuffer.h" />
|
||||||
<ClInclude Include="src\Main.h" />
|
<ClInclude Include="src\Main.h" />
|
||||||
<ClInclude Include="src\Renderer.h" />
|
<ClInclude Include="src\Renderer.h" />
|
||||||
|
<ClInclude Include="src\VertexArray.h" />
|
||||||
<ClInclude Include="src\VertexBuffer.h" />
|
<ClInclude Include="src\VertexBuffer.h" />
|
||||||
|
<ClInclude Include="src\VertexBufferLayout.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="res\shaders\Basic.shader" />
|
<None Include="res\shaders\Basic.shader" />
|
||||||
|
|||||||
@@ -27,6 +27,9 @@
|
|||||||
<ClCompile Include="src\IndexBuffer.cpp">
|
<ClCompile Include="src\IndexBuffer.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\VertexArray.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="src\Main.h">
|
<ClInclude Include="src\Main.h">
|
||||||
@@ -41,6 +44,12 @@
|
|||||||
<ClInclude Include="src\IndexBuffer.h">
|
<ClInclude Include="src\IndexBuffer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\VertexArray.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\VertexBufferLayout.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="res\shaders\Basic.shader" />
|
<None Include="res\shaders\Basic.shader" />
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include "Renderer.h"
|
#include "Renderer.h"
|
||||||
#include "VertexBuffer.h"
|
#include "VertexBuffer.h"
|
||||||
#include "IndexBuffer.h"
|
#include "IndexBuffer.h"
|
||||||
|
#include "VertexArray.h"
|
||||||
|
|
||||||
struct ShaderProgramSource {
|
struct ShaderProgramSource {
|
||||||
std::string VertexSource;
|
std::string VertexSource;
|
||||||
@@ -71,7 +72,6 @@ static unsigned int CompileShader(unsigned int type, const std::string& source)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ int main(void){
|
|||||||
//OpenGL version and profile
|
//OpenGL version and profile
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //core does not have deafult vao
|
||||||
|
|
||||||
//Main window creation
|
//Main window creation
|
||||||
GLFWwindow* window = glfwCreateWindow(640, 480, "OpenGl practice", NULL, NULL);
|
GLFWwindow* window = glfwCreateWindow(640, 480, "OpenGl practice", NULL, NULL);
|
||||||
@@ -129,7 +129,7 @@ int main(void){
|
|||||||
-0.5f, 0.5f
|
-0.5f, 0.5f
|
||||||
};
|
};
|
||||||
|
|
||||||
//index buffer
|
//index buffer indecies
|
||||||
unsigned int indecies[]{
|
unsigned int indecies[]{
|
||||||
0, 1, 2,
|
0, 1, 2,
|
||||||
2, 3, 0
|
2, 3, 0
|
||||||
@@ -140,22 +140,15 @@ int main(void){
|
|||||||
GLCall(glGenVertexArrays(1, &vao));
|
GLCall(glGenVertexArrays(1, &vao));
|
||||||
GLCall(glBindVertexArray(vao));
|
GLCall(glBindVertexArray(vao));
|
||||||
|
|
||||||
//Vertex buffer(s)
|
VertexArray va;
|
||||||
VertexBuffer vb(positions, 4 * 2 * sizeof(float));
|
VertexBuffer vb(positions, 4 * 2 * sizeof(float));
|
||||||
|
VertexBufferLayout layout;
|
||||||
GLCall(glEnableVertexAttribArray(0));
|
layout.Push<float>(2);
|
||||||
GLCall(glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, 0));
|
va.AddBuffer(vb, layout);
|
||||||
|
|
||||||
//index buffer
|
|
||||||
IndexBuffer ib(indecies, 6);
|
IndexBuffer ib(indecies, 6);
|
||||||
|
|
||||||
//Shader to console
|
|
||||||
ShaderProgramSource source = ParseShader("res/shaders/Basic.shader");
|
ShaderProgramSource source = ParseShader("res/shaders/Basic.shader");
|
||||||
/*std::cout << "VERTEX" << std::endl;
|
|
||||||
std::cout << source.VertexSource << std::endl; //to write shader to console
|
|
||||||
std::cout << "FRAGMENT" << std::endl;
|
|
||||||
std::cout << source.FragmentSource << std::endl;*/
|
|
||||||
|
|
||||||
//Creating the shader
|
//Creating the shader
|
||||||
unsigned int shader = CreateShader(source.VertexSource, source.FragmentSource);
|
unsigned int shader = CreateShader(source.VertexSource, source.FragmentSource);
|
||||||
glUseProgram(shader);
|
glUseProgram(shader);
|
||||||
@@ -184,7 +177,7 @@ int main(void){
|
|||||||
GLCall(glUseProgram(shader));
|
GLCall(glUseProgram(shader));
|
||||||
GLCall(glUniform4f(location, r, 0.3f, 0.8f, 1.0f));
|
GLCall(glUniform4f(location, r, 0.3f, 0.8f, 1.0f));
|
||||||
|
|
||||||
GLCall(glBindVertexArray(vao));
|
va.Bind();
|
||||||
ib.Bind();
|
ib.Bind();
|
||||||
|
|
||||||
GLCall(glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr));
|
GLCall(glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr));
|
||||||
@@ -207,4 +200,4 @@ int main(void){
|
|||||||
}
|
}
|
||||||
glfwTerminate();
|
glfwTerminate();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user