Started work on the Renderer and added directory-creating functionality to writeFile
This commit is contained in:
parent
11dc2deb2f
commit
f6ffb9f87e
@ -9,5 +9,5 @@ public:
|
|||||||
void update() override;
|
void update() override;
|
||||||
void render() override;
|
void render() override;
|
||||||
private:
|
private:
|
||||||
Application* m_app;
|
|
||||||
};
|
};
|
@ -193,16 +193,24 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\Application.cpp" />
|
<ClCompile Include="src\Application.cpp" />
|
||||||
<ClCompile Include="src\IntroGamestate.cpp" />
|
<ClCompile Include="src\IntroGamestate.cpp" />
|
||||||
|
<ClCompile Include="src\Renderer\IndexBuffer.cpp" />
|
||||||
|
<ClCompile Include="src\Renderer\Renderer.cpp" />
|
||||||
|
<ClCompile Include="src\Renderer\VertexArray.cpp" />
|
||||||
|
<ClCompile Include="src\Renderer\VertexBuffer.cpp" />
|
||||||
<ClCompile Include="src\Utility.cpp" />
|
<ClCompile Include="src\Utility.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="src\include\Application.h" />
|
<ClInclude Include="src\include\Application.h" />
|
||||||
<ClInclude Include="src\include\Config.h" />
|
<ClInclude Include="src\include\Config.h" />
|
||||||
<ClInclude Include="src\include\IGamestate.h" />
|
<ClInclude Include="src\include\IGamestate.h" />
|
||||||
|
<ClInclude Include="src\include\IndexBuffer.h" />
|
||||||
<ClInclude Include="src\include\IntroGamestate.h" />
|
<ClInclude Include="src\include\IntroGamestate.h" />
|
||||||
<ClInclude Include="src\include\Input.h" />
|
<ClInclude Include="src\include\Input.h" />
|
||||||
<ClInclude Include="src\include\NothinFancy.h" />
|
<ClInclude Include="src\include\NothinFancy.h" />
|
||||||
|
<ClInclude Include="src\include\Renderer.h" />
|
||||||
<ClInclude Include="src\include\Utility.h" />
|
<ClInclude Include="src\include\Utility.h" />
|
||||||
|
<ClInclude Include="src\include\VertexArray.h" />
|
||||||
|
<ClInclude Include="src\include\VertexBuffer.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Natvis Include="NatvisFile.natvis" />
|
<Natvis Include="NatvisFile.natvis" />
|
||||||
|
@ -24,6 +24,18 @@
|
|||||||
<ClCompile Include="src\IntroGamestate.cpp">
|
<ClCompile Include="src\IntroGamestate.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Renderer\VertexBuffer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Renderer\Renderer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Renderer\IndexBuffer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\Renderer\VertexArray.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="src\include\Config.h">
|
<ClInclude Include="src\include\Config.h">
|
||||||
@ -47,6 +59,18 @@
|
|||||||
<ClInclude Include="src\include\Input.h">
|
<ClInclude Include="src\include\Input.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\include\Renderer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\include\VertexBuffer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\include\IndexBuffer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="src\include\VertexArray.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Natvis Include="NatvisFile.natvis" />
|
<Natvis Include="NatvisFile.natvis" />
|
||||||
|
@ -61,7 +61,6 @@ namespace nf {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Application::run() {
|
void Application::run() {
|
||||||
addIntroState();
|
|
||||||
showWindow(true);
|
showWindow(true);
|
||||||
m_running = true;
|
m_running = true;
|
||||||
MSG msg = { };
|
MSG msg = { };
|
||||||
@ -111,6 +110,10 @@ namespace nf {
|
|||||||
SetWindowPos(m_window, HWND_TOP, x, y, in.width, in.height, SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
|
SetWindowPos(m_window, HWND_TOP, x, y, in.width, in.height, SWP_NOOWNERZORDER | SWP_FRAMECHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const HWND& Application::getWindow() {
|
||||||
|
return m_window;
|
||||||
|
}
|
||||||
|
|
||||||
const Config& Application::getConfig() const {
|
const Config& Application::getConfig() const {
|
||||||
return m_currentConfig;
|
return m_currentConfig;
|
||||||
}
|
}
|
||||||
@ -128,20 +131,20 @@ namespace nf {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::addIntroState() {
|
void Application::startIntroState() {
|
||||||
m_sIntro = new IntroGamestate;
|
m_sIntro = new IntroGamestate;
|
||||||
m_sIntro->onEnter(this);
|
m_sIntro->onEnter(this);
|
||||||
m_currentState = m_sIntro;
|
m_currentState = m_sIntro;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::startMainThread() {
|
void Application::startMainThread() {
|
||||||
createOpenGLContext();
|
m_renderer = new Renderer(this);
|
||||||
|
startIntroState();
|
||||||
while (m_running) {
|
while (m_running) {
|
||||||
m_deltaTime = m_fpsDuration.count();
|
m_deltaTime = m_fpsDuration.count();
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
|
||||||
m_currentState->update();
|
m_currentState->update();
|
||||||
m_currentState->render();
|
m_currentState->render();
|
||||||
SwapBuffers(m_hdc);
|
m_renderer->doFrame();
|
||||||
m_frames++;
|
m_frames++;
|
||||||
m_fpsClock2 = std::chrono::steady_clock::now();
|
m_fpsClock2 = std::chrono::steady_clock::now();
|
||||||
m_fpsDuration = m_fpsClock2 - m_fpsClock1;
|
m_fpsDuration = m_fpsClock2 - m_fpsClock1;
|
||||||
@ -149,7 +152,7 @@ namespace nf {
|
|||||||
m_fpsClock1 = std::chrono::steady_clock::now();
|
m_fpsClock1 = std::chrono::steady_clock::now();
|
||||||
m_FPS = m_frames;
|
m_FPS = m_frames;
|
||||||
m_frames = 0;
|
m_frames = 0;
|
||||||
Log(m_FPS);
|
Log("FPS: " + std::to_string(m_FPS));
|
||||||
}
|
}
|
||||||
m_fpsDuration = std::chrono::steady_clock::now() - m_frameClock;
|
m_fpsDuration = std::chrono::steady_clock::now() - m_frameClock;
|
||||||
while (m_fpsDuration.count() < m_minFrametime) {
|
while (m_fpsDuration.count() < m_minFrametime) {
|
||||||
@ -158,9 +161,7 @@ namespace nf {
|
|||||||
m_frameClock = std::chrono::steady_clock::now();
|
m_frameClock = std::chrono::steady_clock::now();
|
||||||
}
|
}
|
||||||
m_currentState->onExit();
|
m_currentState->onExit();
|
||||||
ReleaseDC(m_window, m_hdc);
|
delete m_renderer;
|
||||||
wglMakeCurrent(NULL, NULL);
|
|
||||||
wglDeleteContext(m_hglrc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::registerWindowClass() {
|
void Application::registerWindowClass() {
|
||||||
@ -283,52 +284,6 @@ namespace nf {
|
|||||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::createOpenGLContext() {
|
|
||||||
m_hdc = GetDC(m_window);
|
|
||||||
PIXELFORMATDESCRIPTOR pfd = {
|
|
||||||
sizeof(PIXELFORMATDESCRIPTOR),
|
|
||||||
1,
|
|
||||||
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //Flags
|
|
||||||
PFD_TYPE_RGBA, // The kind of framebuffer. RGBA or palette.
|
|
||||||
32, // Colordepth of the framebuffer.
|
|
||||||
0, 0, 0, 0, 0, 0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0, 0, 0, 0,
|
|
||||||
24, // Number of bits for the depthbuffer
|
|
||||||
8, // Number of bits for the stencilbuffer
|
|
||||||
0, // Number of Aux buffers in the framebuffer.
|
|
||||||
PFD_MAIN_PLANE,
|
|
||||||
0,
|
|
||||||
0, 0, 0
|
|
||||||
};
|
|
||||||
int pf = ChoosePixelFormat(m_hdc, &pfd);
|
|
||||||
SetPixelFormat(m_hdc, pf, &pfd);
|
|
||||||
m_hglrc = wglCreateContext(m_hdc);
|
|
||||||
wglMakeCurrent(m_hdc, m_hglrc);
|
|
||||||
glewExperimental = GL_TRUE;
|
|
||||||
if (glewInit() != GLEW_OK) {
|
|
||||||
Error("Could not initialize GLEW");
|
|
||||||
}
|
|
||||||
const int attrib[] = {
|
|
||||||
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
|
|
||||||
WGL_CONTEXT_MINOR_VERSION_ARB, 3,
|
|
||||||
WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB,
|
|
||||||
0, 0
|
|
||||||
};
|
|
||||||
wglDeleteContext(m_hglrc);
|
|
||||||
m_hglrc = wglCreateContextAttribsARB(m_hdc, NULL, attrib);
|
|
||||||
wglMakeCurrent(m_hdc, m_hglrc);
|
|
||||||
wglSwapIntervalEXT(0);
|
|
||||||
Log("OpenGL version: " + std::string((char*)glGetString(GL_VERSION)));
|
|
||||||
//TODO: Move default vertex array to Renderer
|
|
||||||
GLuint vao;
|
|
||||||
glGenVertexArrays(1, &vao);
|
|
||||||
glBindVertexArray(vao);
|
|
||||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
Application::~Application() {
|
Application::~Application() {
|
||||||
Log("Exiting NF application");
|
Log("Exiting NF application");
|
||||||
|
|
||||||
|
22
NothinFancy/src/Renderer/IndexBuffer.cpp
Normal file
22
NothinFancy/src/Renderer/IndexBuffer.cpp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#include "IndexBuffer.h"
|
||||||
|
|
||||||
|
namespace nf {
|
||||||
|
IndexBuffer::IndexBuffer(const void* data, size_t count) {
|
||||||
|
m_count = count;
|
||||||
|
glGenBuffers(1, &m_id);
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_id);
|
||||||
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, count * sizeof(unsigned int), data, GL_STATIC_DRAW);//TODO: See if I need to change this to dynamic
|
||||||
|
}
|
||||||
|
|
||||||
|
void IndexBuffer::bind() const {
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, m_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int IndexBuffer::getCount() {
|
||||||
|
return m_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
IndexBuffer::~IndexBuffer() {
|
||||||
|
glDeleteBuffers(1, &m_id);
|
||||||
|
}
|
||||||
|
}
|
71
NothinFancy/src/Renderer/Renderer.cpp
Normal file
71
NothinFancy/src/Renderer/Renderer.cpp
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
#include "Renderer.h"
|
||||||
|
|
||||||
|
#include "Application.h"
|
||||||
|
|
||||||
|
namespace nf {
|
||||||
|
Renderer::Renderer(Application* app) {
|
||||||
|
m_app = app;
|
||||||
|
m_hdc = GetDC(m_app->getWindow());
|
||||||
|
PIXELFORMATDESCRIPTOR pfd = {
|
||||||
|
sizeof(PIXELFORMATDESCRIPTOR),
|
||||||
|
1,
|
||||||
|
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //Flags
|
||||||
|
PFD_TYPE_RGBA, // The kind of framebuffer. RGBA or palette.
|
||||||
|
32, // Colordepth of the framebuffer.
|
||||||
|
0, 0, 0, 0, 0, 0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0, 0, 0, 0,
|
||||||
|
24, // Number of bits for the depthbuffer
|
||||||
|
8, // Number of bits for the stencilbuffer
|
||||||
|
0, // Number of Aux buffers in the framebuffer.
|
||||||
|
PFD_MAIN_PLANE,
|
||||||
|
0,
|
||||||
|
0, 0, 0
|
||||||
|
};
|
||||||
|
int pf = ChoosePixelFormat(m_hdc, &pfd);
|
||||||
|
SetPixelFormat(m_hdc, pf, &pfd);
|
||||||
|
m_hglrc = wglCreateContext(m_hdc);
|
||||||
|
wglMakeCurrent(m_hdc, m_hglrc);
|
||||||
|
glewExperimental = GL_TRUE;
|
||||||
|
if (glewInit() != GLEW_OK) {
|
||||||
|
Error("Could not initialize GLEW");
|
||||||
|
}
|
||||||
|
const int attrib[] = {
|
||||||
|
WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
|
||||||
|
WGL_CONTEXT_MINOR_VERSION_ARB, 3,
|
||||||
|
WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB,
|
||||||
|
0, 0
|
||||||
|
};
|
||||||
|
wglDeleteContext(m_hglrc);
|
||||||
|
m_hglrc = wglCreateContextAttribsARB(m_hdc, NULL, attrib);
|
||||||
|
wglMakeCurrent(m_hdc, m_hglrc);
|
||||||
|
wglSwapIntervalEXT(0);
|
||||||
|
Log("OpenGL version: " + std::string((char*)glGetString(GL_VERSION)));
|
||||||
|
GLuint vao;
|
||||||
|
glGenVertexArrays(1, &vao);
|
||||||
|
glBindVertexArray(vao);
|
||||||
|
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Renderer::doFrame() {
|
||||||
|
glViewport(0, 0, m_app->getConfig().width, m_app->getConfig().height);
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
|
SwapBuffers(m_hdc);
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
GLenum err = glGetError();
|
||||||
|
if (err != GL_NO_ERROR) {
|
||||||
|
Error(("OpenGL error " + std::to_string(err)).c_str());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
Renderer::~Renderer() {
|
||||||
|
ReleaseDC(m_app->getWindow(), m_hdc);
|
||||||
|
wglMakeCurrent(NULL, NULL);
|
||||||
|
wglDeleteContext(m_hglrc);
|
||||||
|
}
|
||||||
|
}
|
12
NothinFancy/src/Renderer/VertexArray.cpp
Normal file
12
NothinFancy/src/Renderer/VertexArray.cpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include "VertexArray.h"
|
||||||
|
|
||||||
|
namespace nf{
|
||||||
|
VertexArray::VertexArray(VertexBuffer& buffer) {
|
||||||
|
glGenVertexArrays(1, &m_id);
|
||||||
|
//TODO: Bind buffer and set the layout
|
||||||
|
}
|
||||||
|
|
||||||
|
VertexArray::~VertexArray() {
|
||||||
|
glDeleteVertexArrays(1, &m_id);
|
||||||
|
}
|
||||||
|
}
|
17
NothinFancy/src/Renderer/VertexBuffer.cpp
Normal file
17
NothinFancy/src/Renderer/VertexBuffer.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include "VertexBuffer.h"
|
||||||
|
|
||||||
|
namespace nf {
|
||||||
|
VertexBuffer::VertexBuffer(const void* data, size_t size) {
|
||||||
|
glGenBuffers(1, &m_id);
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, m_id);
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW);//TODO: See if I need to change this to dynamic
|
||||||
|
}
|
||||||
|
|
||||||
|
void VertexBuffer::bind() const {
|
||||||
|
glBindBuffer(GL_ARRAY_BUFFER, m_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
VertexBuffer::~VertexBuffer() {
|
||||||
|
glDeleteBuffers(1, &m_id);
|
||||||
|
}
|
||||||
|
}
|
@ -49,6 +49,19 @@ namespace nf {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool writeFile(const char* filename, const std::string& in) {
|
bool writeFile(const char* filename, const std::string& in) {
|
||||||
|
std::string file(filename);
|
||||||
|
if (file.find('/') || file.find('\\')) {
|
||||||
|
int pos = file.find_last_of("/\\");
|
||||||
|
std::string temp = file.substr(0, pos);
|
||||||
|
std::wstring folders(temp.begin(), temp.end());
|
||||||
|
WCHAR exe[MAX_PATH];
|
||||||
|
GetModuleFileName(GetModuleHandle(NULL), exe, MAX_PATH);
|
||||||
|
std::wstring rootDir(exe);
|
||||||
|
pos = rootDir.find_last_of(L"/\\");
|
||||||
|
rootDir = rootDir.substr(0, pos + 1);
|
||||||
|
folders = rootDir + folders;
|
||||||
|
CreateDirectory(folders.c_str(), NULL);
|
||||||
|
}
|
||||||
std::ofstream out;
|
std::ofstream out;
|
||||||
out.open(filename);
|
out.open(filename);
|
||||||
if (!out) {
|
if (!out) {
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "Utility.h"
|
#include "Utility.h"
|
||||||
#include "IntroGamestate.h"
|
#include "IntroGamestate.h"
|
||||||
|
#include "Renderer.h"
|
||||||
|
|
||||||
namespace nf {
|
namespace nf {
|
||||||
class Application {
|
class Application {
|
||||||
@ -22,6 +23,7 @@ namespace nf {
|
|||||||
void run();
|
void run();
|
||||||
void showWindow(bool show);
|
void showWindow(bool show);
|
||||||
void changeState(const char* stateName);
|
void changeState(const char* stateName);
|
||||||
|
const HWND& getWindow();
|
||||||
void changeConfig(const Config& in);
|
void changeConfig(const Config& in);
|
||||||
const Config& getConfig() const;
|
const Config& getConfig() const;
|
||||||
int getFPS() const;
|
int getFPS() const;
|
||||||
@ -29,7 +31,7 @@ namespace nf {
|
|||||||
|
|
||||||
~Application();
|
~Application();
|
||||||
private:
|
private:
|
||||||
void addIntroState();
|
void startIntroState();
|
||||||
void startMainThread();
|
void startMainThread();
|
||||||
void registerWindowClass();
|
void registerWindowClass();
|
||||||
void toggleFullscreen();
|
void toggleFullscreen();
|
||||||
@ -38,8 +40,6 @@ namespace nf {
|
|||||||
|
|
||||||
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
|
|
||||||
void createOpenGLContext();
|
|
||||||
|
|
||||||
Config m_currentConfig;
|
Config m_currentConfig;
|
||||||
bool m_running;
|
bool m_running;
|
||||||
HINSTANCE m_hInst;
|
HINSTANCE m_hInst;
|
||||||
@ -47,8 +47,6 @@ namespace nf {
|
|||||||
HWND m_window;
|
HWND m_window;
|
||||||
LONG m_defaultWindowStyle;
|
LONG m_defaultWindowStyle;
|
||||||
WINDOWPLACEMENT m_wndPlacement;
|
WINDOWPLACEMENT m_wndPlacement;
|
||||||
HDC m_hdc;
|
|
||||||
HGLRC m_hglrc;
|
|
||||||
|
|
||||||
std::chrono::steady_clock::time_point m_frameClock = std::chrono::steady_clock::now();
|
std::chrono::steady_clock::time_point m_frameClock = std::chrono::steady_clock::now();
|
||||||
std::chrono::duration<double> m_fpsDuration;
|
std::chrono::duration<double> m_fpsDuration;
|
||||||
@ -70,5 +68,8 @@ namespace nf {
|
|||||||
|
|
||||||
//Array of booleans that represent keyboard and mouse input minus the scrollwheel
|
//Array of booleans that represent keyboard and mouse input minus the scrollwheel
|
||||||
bool m_input[164];
|
bool m_input[164];
|
||||||
|
|
||||||
|
//Renderer object to use OpenGL to render the current state
|
||||||
|
Renderer* m_renderer;
|
||||||
};
|
};
|
||||||
}
|
}
|
18
NothinFancy/src/include/IndexBuffer.h
Normal file
18
NothinFancy/src/include/IndexBuffer.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Renderer.h"
|
||||||
|
|
||||||
|
namespace nf {
|
||||||
|
class IndexBuffer {
|
||||||
|
public:
|
||||||
|
IndexBuffer(const void* data, size_t count);
|
||||||
|
|
||||||
|
void bind() const;
|
||||||
|
unsigned int getCount();
|
||||||
|
|
||||||
|
~IndexBuffer();
|
||||||
|
private:
|
||||||
|
unsigned int m_id;
|
||||||
|
unsigned int m_count;
|
||||||
|
};
|
||||||
|
}
|
22
NothinFancy/src/include/Renderer.h
Normal file
22
NothinFancy/src/include/Renderer.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#pragma once
|
||||||
|
#ifdef NFENGINE
|
||||||
|
#include "GL/glew.h"
|
||||||
|
#include "GL\wglew.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace nf {
|
||||||
|
class Application;
|
||||||
|
class Renderer {
|
||||||
|
public:
|
||||||
|
Renderer(Application* app);
|
||||||
|
|
||||||
|
void doFrame();
|
||||||
|
|
||||||
|
~Renderer();
|
||||||
|
private:
|
||||||
|
Application* m_app;
|
||||||
|
|
||||||
|
HDC m_hdc;
|
||||||
|
HGLRC m_hglrc;
|
||||||
|
};
|
||||||
|
}
|
13
NothinFancy/src/include/VertexArray.h
Normal file
13
NothinFancy/src/include/VertexArray.h
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "VertexBuffer.h"
|
||||||
|
|
||||||
|
namespace nf {
|
||||||
|
class VertexArray {
|
||||||
|
public:
|
||||||
|
VertexArray(VertexBuffer& buffer);
|
||||||
|
|
||||||
|
~VertexArray();
|
||||||
|
private:
|
||||||
|
unsigned int m_id;
|
||||||
|
};
|
||||||
|
}
|
16
NothinFancy/src/include/VertexBuffer.h
Normal file
16
NothinFancy/src/include/VertexBuffer.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Renderer.h"
|
||||||
|
|
||||||
|
namespace nf {
|
||||||
|
class VertexBuffer {
|
||||||
|
public:
|
||||||
|
VertexBuffer(const void* data, size_t size);
|
||||||
|
|
||||||
|
void bind() const;
|
||||||
|
|
||||||
|
~VertexBuffer();
|
||||||
|
private:
|
||||||
|
unsigned int m_id;
|
||||||
|
};
|
||||||
|
}
|
Reference in New Issue
Block a user