abstracted creation of vertex and index buffers
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.vs/OpenGL/v17/ipch/AutoPCH/29f0bb36daeece8/REMDERER.ipch
Normal file
BIN
.vs/OpenGL/v17/ipch/AutoPCH/29f0bb36daeece8/REMDERER.ipch
Normal file
Binary file not shown.
BIN
.vs/OpenGL/v17/ipch/AutoPCH/2eb7037a0f95a519/VERTEXBUFFER.ipch
Normal file
BIN
.vs/OpenGL/v17/ipch/AutoPCH/2eb7037a0f95a519/VERTEXBUFFER.ipch
Normal file
Binary file not shown.
BIN
.vs/OpenGL/v17/ipch/AutoPCH/64e5a29d06d8a206/RENDERER.ipch
Normal file
BIN
.vs/OpenGL/v17/ipch/AutoPCH/64e5a29d06d8a206/RENDERER.ipch
Normal file
Binary file not shown.
Binary file not shown.
BIN
.vs/OpenGL/v17/ipch/AutoPCH/9c05f35919684dbb/RENDERER.ipch
Normal file
BIN
.vs/OpenGL/v17/ipch/AutoPCH/9c05f35919684dbb/RENDERER.ipch
Normal file
Binary file not shown.
BIN
.vs/OpenGL/v17/ipch/AutoPCH/be8e051a9678111d/APPLICATION.ipch
Normal file
BIN
.vs/OpenGL/v17/ipch/AutoPCH/be8e051a9678111d/APPLICATION.ipch
Normal file
Binary file not shown.
BIN
.vs/OpenGL/v17/ipch/AutoPCH/ed3850acba3c2a77/INDEXBUFFER.ipch
Normal file
BIN
.vs/OpenGL/v17/ipch/AutoPCH/ed3850acba3c2a77/INDEXBUFFER.ipch
Normal file
Binary file not shown.
7
.vs/VSWorkspaceState.json
Normal file
7
.vs/VSWorkspaceState.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"ExpandedNodes": [
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"SelectedNode": "\\OpenGL.sln",
|
||||||
|
"PreviewInSolutionExplorer": false
|
||||||
|
}
|
||||||
BIN
.vs/slnx.sqlite
Normal file
BIN
.vs/slnx.sqlite
Normal file
Binary file not shown.
BIN
Debug/OpenGL.exe
BIN
Debug/OpenGL.exe
Binary file not shown.
BIN
Debug/OpenGL.pdb
BIN
Debug/OpenGL.pdb
Binary file not shown.
Binary file not shown.
BIN
OpenGL/Debug/IndexBuffer.obj
Normal file
BIN
OpenGL/Debug/IndexBuffer.obj
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,2 @@
|
|||||||
Application.cpp
|
Application.cpp
|
||||||
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
|
|
||||||
LINK : warning LNK4098: defaultlib 'MSVCRT' 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 'D:\cpp\OpenGL\Debug\vc120.pdb'; linking object as if no debug info
|
|
||||||
OpenGL.vcxproj -> D:\cpp\OpenGL\Debug\OpenGL.exe
|
OpenGL.vcxproj -> D:\cpp\OpenGL\Debug\OpenGL.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.
BIN
OpenGL/Debug/Renderer.obj
Normal file
BIN
OpenGL/Debug/Renderer.obj
Normal file
Binary file not shown.
BIN
OpenGL/Debug/VertexBuffer.obj
Normal file
BIN
OpenGL/Debug/VertexBuffer.obj
Normal file
Binary file not shown.
BIN
OpenGL/Debug/application.obj.enc
Normal file
BIN
OpenGL/Debug/application.obj.enc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -152,10 +152,18 @@
|
|||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\Application.cpp" />
|
<ClCompile Include="src\Application.cpp" />
|
||||||
|
<ClCompile Include="src\IndexBuffer.cpp" />
|
||||||
|
<ClCompile Include="src\Renderer.cpp" />
|
||||||
|
<ClCompile Include="src\VertexBuffer.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="res\shaders\Basic.shader" />
|
<None Include="res\shaders\Basic.shader" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="src\IndexBuffer.h" />
|
||||||
|
<ClInclude Include="src\Renderer.h" />
|
||||||
|
<ClInclude Include="src\VertexBuffer.h" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
|||||||
@@ -18,8 +18,28 @@
|
|||||||
<ClCompile Include="src\Application.cpp">
|
<ClCompile Include="src\Application.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Renderer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\VertexBuffer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\IndexBuffer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="res\shaders\Basic.shader" />
|
<None Include="res\shaders\Basic.shader" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="src\Renderer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\VertexBuffer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\IndexBuffer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
BIN
OpenGL/Release/Application.obj
Normal file
BIN
OpenGL/Release/Application.obj
Normal file
Binary file not shown.
11
OpenGL/Release/OpenGL.exe.recipe
Normal file
11
OpenGL/Release/OpenGL.exe.recipe
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
<ProjectOutputs>
|
||||||
|
<ProjectOutput>
|
||||||
|
<FullPath>D:\cpp\OpenGL\Release\OpenGL.exe</FullPath>
|
||||||
|
</ProjectOutput>
|
||||||
|
</ProjectOutputs>
|
||||||
|
<ContentFiles />
|
||||||
|
<SatelliteDlls />
|
||||||
|
<NonRecipeFileRefs />
|
||||||
|
</Project>
|
||||||
BIN
OpenGL/Release/OpenGL.iobj
Normal file
BIN
OpenGL/Release/OpenGL.iobj
Normal file
Binary file not shown.
BIN
OpenGL/Release/OpenGL.ipdb
Normal file
BIN
OpenGL/Release/OpenGL.ipdb
Normal file
Binary file not shown.
8
OpenGL/Release/OpenGL.log
Normal file
8
OpenGL/Release/OpenGL.log
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Application.cpp
|
||||||
|
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
|
||||||
|
Generating code
|
||||||
|
Previous IPDB not found, fall back to full compilation.
|
||||||
|
All 214 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
|
||||||
|
Finished generating code
|
||||||
|
glew32s.lib(glew.obj) : warning LNK4099: PDB 'vc120.pdb' was not found with 'glew32s.lib(glew.obj)' or at 'D:\cpp\OpenGL\Release\vc120.pdb'; linking object as if no debug info
|
||||||
|
OpenGL.vcxproj -> D:\cpp\OpenGL\Release\OpenGL.exe
|
||||||
BIN
OpenGL/Release/OpenGL.tlog/CL.command.1.tlog
Normal file
BIN
OpenGL/Release/OpenGL.tlog/CL.command.1.tlog
Normal file
Binary file not shown.
BIN
OpenGL/Release/OpenGL.tlog/CL.read.1.tlog
Normal file
BIN
OpenGL/Release/OpenGL.tlog/CL.read.1.tlog
Normal file
Binary file not shown.
BIN
OpenGL/Release/OpenGL.tlog/CL.write.1.tlog
Normal file
BIN
OpenGL/Release/OpenGL.tlog/CL.write.1.tlog
Normal file
Binary file not shown.
2
OpenGL/Release/OpenGL.tlog/OpenGL.lastbuildstate
Normal file
2
OpenGL/Release/OpenGL.tlog/OpenGL.lastbuildstate
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
PlatformToolSet=v143:VCToolArchitecture=Native32Bit:VCToolsVersion=14.31.31103:TargetPlatformVersion=10.0.19041.0:
|
||||||
|
Release|Win32|D:\cpp\OpenGL\|
|
||||||
BIN
OpenGL/Release/OpenGL.tlog/link.command.1.tlog
Normal file
BIN
OpenGL/Release/OpenGL.tlog/link.command.1.tlog
Normal file
Binary file not shown.
BIN
OpenGL/Release/OpenGL.tlog/link.read.1.tlog
Normal file
BIN
OpenGL/Release/OpenGL.tlog/link.read.1.tlog
Normal file
Binary file not shown.
BIN
OpenGL/Release/OpenGL.tlog/link.write.1.tlog
Normal file
BIN
OpenGL/Release/OpenGL.tlog/link.write.1.tlog
Normal file
Binary file not shown.
BIN
OpenGL/Release/vc143.pdb
Normal file
BIN
OpenGL/Release/vc143.pdb
Normal file
Binary file not shown.
@@ -13,7 +13,9 @@ void main()
|
|||||||
|
|
||||||
layout(location = 0) out vec4 color;
|
layout(location = 0) out vec4 color;
|
||||||
|
|
||||||
|
uniform vec4 u_Color;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
color = vec4(1, 1, 0, 1.0);
|
color = u_Color;
|
||||||
};
|
};
|
||||||
@@ -4,8 +4,13 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <cstdlib>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
#include "Renderer.h"
|
||||||
|
#include "VertexBuffer.h"
|
||||||
|
#include "IndexBuffer.h"
|
||||||
|
|
||||||
struct ShaderProgramSource
|
struct ShaderProgramSource
|
||||||
{
|
{
|
||||||
std::string VertexSource;
|
std::string VertexSource;
|
||||||
@@ -86,10 +91,16 @@ static unsigned int CreateShader(const std::string& vertexShader, const std::str
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
srand(static_cast <unsigned> (time(0)));
|
||||||
/* Initialize the library */
|
/* Initialize the library */
|
||||||
|
|
||||||
if (!glfwInit())
|
if (!glfwInit())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
||||||
|
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||||
|
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||||
|
|
||||||
/* Create a windowed mode window and its OpenGL context */
|
/* Create a windowed mode window and its OpenGL context */
|
||||||
GLFWwindow* window = glfwCreateWindow(640, 480, "Hello World", nullptr, nullptr);
|
GLFWwindow* window = glfwCreateWindow(640, 480, "Hello World", nullptr, nullptr);
|
||||||
|
|
||||||
@@ -103,78 +114,104 @@ int main(void)
|
|||||||
/* Make the window's context current */
|
/* Make the window's context current */
|
||||||
glfwMakeContextCurrent(window);
|
glfwMakeContextCurrent(window);
|
||||||
|
|
||||||
|
glfwSwapInterval(1);
|
||||||
|
|
||||||
if (glewInit() != GLEW_OK)
|
if (glewInit() != GLEW_OK)
|
||||||
std::cout << "ERROR" << std::endl;
|
std::cout << "ERROR" << std::endl;
|
||||||
|
|
||||||
std::cout << glGetString(GL_VERSION) << std::endl;
|
std::cout << glGetString(GL_VERSION) << std::endl;
|
||||||
|
|
||||||
constexpr float triforcePos[] = {
|
|
||||||
-1.0f, -1.0f, //0
|
|
||||||
-0.5f, 0.0f, //1 --
|
|
||||||
0.0f, -1.0f, //2
|
|
||||||
0.0f, 1.0f, //3
|
|
||||||
0.5f, 0.0f, //4 --
|
|
||||||
1.0f, -1.0f //5
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned int triforceInd[] = {
|
|
||||||
0, 1, 2,
|
|
||||||
2, 4, 5,
|
|
||||||
1, 3, 4
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
constexpr float positions[] = {
|
|
||||||
-0.5f, -0.5f,
|
|
||||||
0.5f, -0.5f,
|
|
||||||
0.5f, 0.5f,
|
|
||||||
-0.5f, 0.5f,
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned int indices[] = {
|
|
||||||
0, 1, 2,
|
|
||||||
2, 3, 0
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned int buffer;
|
|
||||||
glGenBuffers(1, &buffer);
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, buffer);
|
|
||||||
glBufferData(GL_ARRAY_BUFFER, 6 * 2 * sizeof(float), triforcePos, GL_STATIC_DRAW);
|
|
||||||
|
|
||||||
glEnableVertexAttribArray(0);
|
|
||||||
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, 0);
|
|
||||||
|
|
||||||
unsigned int ibo;
|
|
||||||
glGenBuffers(1, &ibo);
|
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
|
|
||||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, 3 * 3 * sizeof(unsigned int), triforceInd, GL_STATIC_DRAW);
|
|
||||||
|
|
||||||
ShaderProgramSource source = ParseShader("res/shaders/Basic.shader");
|
|
||||||
|
|
||||||
unsigned int shader = CreateShader(source.VertexSource, source.FragmentSource);
|
|
||||||
glUseProgram(shader);
|
|
||||||
|
|
||||||
/* Loop until the user closes the window */
|
|
||||||
while (!glfwWindowShouldClose(window))
|
|
||||||
{
|
{
|
||||||
/* Render here */
|
constexpr float triforcePos[] = {
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
-1.0f, -1.0f, //0
|
||||||
|
-0.5f, 0.0f, //1 --
|
||||||
|
0.0f, -1.0f, //2
|
||||||
|
0.0f, 1.0f, //3
|
||||||
|
0.5f, 0.0f, //4 --
|
||||||
|
1.0f, -1.0f //5
|
||||||
|
|
||||||
glDrawElements(GL_TRIANGLES, 9, GL_UNSIGNED_INT, nullptr);
|
};
|
||||||
|
|
||||||
|
unsigned int triforceInd[] = {
|
||||||
|
0, 1, 2,
|
||||||
|
2, 4, 5,
|
||||||
|
1, 3, 4
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr float positions[] = {
|
||||||
|
-0.5f, -0.5f,
|
||||||
|
0.5f, -0.5f,
|
||||||
|
0.5f, 0.5f,
|
||||||
|
-0.5f, 0.5f,
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned int indices[] = {
|
||||||
|
0, 1, 2,
|
||||||
|
2, 3, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned int vao;
|
||||||
|
GLCall(glGenVertexArrays(1, &vao));
|
||||||
|
GLCall(glBindVertexArray(vao));
|
||||||
|
|
||||||
|
VertexBuffer vb(positions, 4 * 2 * sizeof(float));
|
||||||
|
|
||||||
|
glEnableVertexAttribArray(0);
|
||||||
|
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, 0);
|
||||||
|
|
||||||
|
IndexBuffer ib(indices, 3 * 2);
|
||||||
|
|
||||||
|
ShaderProgramSource source = ParseShader("res/shaders/Basic.shader");
|
||||||
|
|
||||||
|
unsigned int shader = CreateShader(source.VertexSource, source.FragmentSource);
|
||||||
|
glUseProgram(shader);
|
||||||
|
|
||||||
|
|
||||||
/* Swap front and back buffers */
|
int location = glGetUniformLocation(shader, "u_Color");
|
||||||
glfwSwapBuffers(window);
|
ASSERT(location != -1);
|
||||||
|
glUniform4f(location, 0.8f, 0.3f, 0.8f, 1.0f);
|
||||||
|
|
||||||
/* Poll for and process events */
|
GLCall(glBindVertexArray(0));
|
||||||
glfwPollEvents();
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||||
|
glUseProgram(0);
|
||||||
|
|
||||||
|
float r = 0.0f;
|
||||||
|
float increment = 0.05f;
|
||||||
|
|
||||||
|
int x = 0;
|
||||||
|
/* Loop until the user closes the window */
|
||||||
|
while (!glfwWindowShouldClose(window))
|
||||||
|
{
|
||||||
|
x++;
|
||||||
|
/* Render here */
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
|
glUseProgram(shader);
|
||||||
|
glUniform4f(location, r, 0.3f, 0.8f, 1.0f);
|
||||||
|
|
||||||
|
GLCall(glBindVertexArray(vao));
|
||||||
|
ib.Bind();
|
||||||
|
|
||||||
|
GLCall(glDrawElements(GL_TRIANGLES, 9, GL_UNSIGNED_INT, nullptr));
|
||||||
|
|
||||||
|
if (r > 1.0f)
|
||||||
|
increment = -0.05f;
|
||||||
|
else if (r < 0.0f)
|
||||||
|
increment = 0.05f;
|
||||||
|
|
||||||
|
r += increment;
|
||||||
|
|
||||||
|
/* Swap front and back buffers */
|
||||||
|
glfwSwapBuffers(window);
|
||||||
|
|
||||||
|
/* Poll for and process events */
|
||||||
|
glfwPollEvents();
|
||||||
|
}
|
||||||
|
|
||||||
|
glDeleteProgram(shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
glDeleteProgram(shader);
|
|
||||||
|
|
||||||
glfwTerminate();
|
glfwTerminate();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
25
OpenGL/src/IndexBuffer.cpp
Normal file
25
OpenGL/src/IndexBuffer.cpp
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#include "IndexBuffer.h"
|
||||||
|
#include "Renderer.h"
|
||||||
|
|
||||||
|
IndexBuffer::IndexBuffer(const unsigned int* data, unsigned int count)
|
||||||
|
: m_Count(count)
|
||||||
|
{
|
||||||
|
GLCall(glGenBuffers(1, &m_RendererID));
|
||||||
|
GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_RendererID));
|
||||||
|
GLCall(glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(unsigned int), data, GL_STATIC_DRAW));
|
||||||
|
}
|
||||||
|
|
||||||
|
IndexBuffer::~IndexBuffer()
|
||||||
|
{
|
||||||
|
GLCall(glDeleteBuffers(1, &m_RendererID));
|
||||||
|
}
|
||||||
|
|
||||||
|
void IndexBuffer::Bind() const
|
||||||
|
{
|
||||||
|
GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_RendererID));
|
||||||
|
}
|
||||||
|
|
||||||
|
void IndexBuffer::Unbind() const
|
||||||
|
{
|
||||||
|
GLCall(glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0));
|
||||||
|
}
|
||||||
16
OpenGL/src/IndexBuffer.h
Normal file
16
OpenGL/src/IndexBuffer.h
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
class IndexBuffer
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
unsigned int m_RendererID;
|
||||||
|
unsigned int m_Count;
|
||||||
|
public:
|
||||||
|
IndexBuffer(const unsigned int* data, unsigned int count);
|
||||||
|
~IndexBuffer();
|
||||||
|
|
||||||
|
void Bind() const;
|
||||||
|
void Unbind() const;
|
||||||
|
|
||||||
|
inline unsigned int GetCount() const { return m_Count; }
|
||||||
|
};
|
||||||
18
OpenGL/src/Renderer.cpp
Normal file
18
OpenGL/src/Renderer.cpp
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#include "Renderer.h"
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void GLClearError()
|
||||||
|
{
|
||||||
|
while (glGetError() != GL_NO_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GLLogCall(const char* function, const char* file, int line)
|
||||||
|
{
|
||||||
|
while (const GLenum error = glGetError())
|
||||||
|
{
|
||||||
|
std::cout << "[OpenGL Error] (" << error << "): " << function << " " << file << ":" << line << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
11
OpenGL/src/Renderer.h
Normal file
11
OpenGL/src/Renderer.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <GL/glew.h>
|
||||||
|
|
||||||
|
#define ASSERT(x) if (!(x)) __debugbreak();
|
||||||
|
#define GLCall(x) GLClearError();\
|
||||||
|
x;\
|
||||||
|
ASSERT(GLLogCall(#x, __FILE__, __LINE__))
|
||||||
|
|
||||||
|
void GLClearError();
|
||||||
|
bool GLLogCall (const char* function, const char* file, int line);
|
||||||
25
OpenGL/src/VertexBuffer.cpp
Normal file
25
OpenGL/src/VertexBuffer.cpp
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#include "VertexBuffer.h"
|
||||||
|
#include "Renderer.h"
|
||||||
|
|
||||||
|
VertexBuffer::VertexBuffer(const void* data, unsigned int size)
|
||||||
|
{
|
||||||
|
GLCall(glGenBuffers(1, &m_RendererID));
|
||||||
|
GLCall(glBindBuffer(GL_ARRAY_BUFFER, m_RendererID));
|
||||||
|
GLCall(glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW));
|
||||||
|
}
|
||||||
|
|
||||||
|
VertexBuffer::~VertexBuffer()
|
||||||
|
{
|
||||||
|
GLCall(glDeleteBuffers(1, &m_RendererID));
|
||||||
|
}
|
||||||
|
|
||||||
|
void VertexBuffer::Bind() const
|
||||||
|
{
|
||||||
|
GLCall(glBindBuffer(GL_ARRAY_BUFFER, m_RendererID));
|
||||||
|
}
|
||||||
|
|
||||||
|
void VertexBuffer::Unbind() const
|
||||||
|
{
|
||||||
|
GLCall(glBindBuffer(GL_ARRAY_BUFFER, 0));
|
||||||
|
}
|
||||||
|
|
||||||
13
OpenGL/src/VertexBuffer.h
Normal file
13
OpenGL/src/VertexBuffer.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
class VertexBuffer
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
unsigned int m_RendererID{};
|
||||||
|
public:
|
||||||
|
VertexBuffer(const void* data, unsigned int size);
|
||||||
|
~VertexBuffer();
|
||||||
|
|
||||||
|
void Bind() const;
|
||||||
|
void Unbind() const;
|
||||||
|
};
|
||||||
BIN
Release/OpenGL.exe
Normal file
BIN
Release/OpenGL.exe
Normal file
Binary file not shown.
BIN
Release/OpenGL.pdb
Normal file
BIN
Release/OpenGL.pdb
Normal file
Binary file not shown.
Reference in New Issue
Block a user