Added Model and default shader; Organization

This commit is contained in:
Grayson Riffe (Laptop) 2021-08-26 00:23:56 -05:00
parent 1c638bdcb9
commit d74f808a17
23 changed files with 293 additions and 64 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@
bin/ bin/
int/ int/
*aps *aps
*res

View File

@ -105,6 +105,8 @@
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol> <EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
<IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
<AdditionalLibraryDirectories>$(ProjectDir)dep\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>nf.res;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -126,6 +128,8 @@
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol> <EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
<IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
<AdditionalLibraryDirectories>$(ProjectDir)dep\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>nf.res;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -143,6 +147,8 @@
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol> <EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
<IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
<AdditionalLibraryDirectories>$(ProjectDir)dep\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>nf.res;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@ -164,6 +170,8 @@
<EntryPointSymbol>mainCRTStartup</EntryPointSymbol> <EntryPointSymbol>mainCRTStartup</EntryPointSymbol>
<IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries> <IgnoreSpecificDefaultLibraries>libcmt.lib</IgnoreSpecificDefaultLibraries>
<AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
<AdditionalLibraryDirectories>$(ProjectDir)dep\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>nf.res;%(AdditionalDependencies)</AdditionalDependencies>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>

View File

@ -1,11 +1,9 @@
#include "NothinFancy.h" #include "NothinFancy.h"
#include "MainState.h" #include "MainState.h"
using namespace nf;
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
Config conf = { 1280, 720, false, "Example Game"}; nf::Config conf = { 1280, 720, false, "Example Game"};
Application app(conf); nf::Application app(conf);
//app.setWindowIcon(...); //app.setWindowIcon(...);
// app.setWindowCursor(...); // app.setWindowCursor(...);

View File

@ -1,6 +1,6 @@
#include "MainState.h" #include "MainState.h"
MainState::MainState(Application* app) : MainState::MainState(nf::Application* app) :
Gamestate(app) Gamestate(app)
{ {
} }
@ -13,7 +13,7 @@ void MainState::update(double deltaTime) {
} }
void MainState::render() { void MainState::render() {
static Renderer& renderer = *m_app->getRenderer(); static nf::Renderer& renderer = *m_app->getRenderer();
} }
void MainState::onExit() { void MainState::onExit() {

View File

@ -3,7 +3,7 @@
class MainState : public nf::Gamestate { class MainState : public nf::Gamestate {
public: public:
MainState(Application* app); MainState(nf::Application* app);
void onEnter() override; void onEnter() override;

View File

@ -0,0 +1,71 @@
// Microsoft Visual C++ generated resource script.
//
#include "src/include/resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"src/include/resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""winres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// SHADER
//
IDR_DEFAULTVERTEX RCDATA "res\\defaultShader\\vertex.shader"
IDR_DEFAULTFRAGMENT RCDATA "res\\defaultShader\\fragment.shader"
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@ -112,6 +112,10 @@
<ProjectReference> <ProjectReference>
<LinkLibraryDependencies>true</LinkLibraryDependencies> <LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference> </ProjectReference>
<PostBuildEvent>
<Command>copy "$(IntDir)$(ProjectName).res" "$(SolutionDir)Game\dep\nf.res"</Command>
<Message>Copying default NF resources</Message>
</PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
@ -139,6 +143,10 @@
<ProjectReference> <ProjectReference>
<LinkLibraryDependencies>true</LinkLibraryDependencies> <LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference> </ProjectReference>
<PostBuildEvent>
<Command>copy "$(IntDir)$(ProjectName).res" "$(SolutionDir)Game\dep\nf.res"</Command>
<Message>Copying default NF resources</Message>
</PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile> <ClCompile>
@ -162,6 +170,10 @@
<ProjectReference> <ProjectReference>
<LinkLibraryDependencies>true</LinkLibraryDependencies> <LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference> </ProjectReference>
<PostBuildEvent>
<Command>copy "$(IntDir)$(ProjectName).res" "$(SolutionDir)Game\dep\nf.res"</Command>
<Message>Copying default NF resources</Message>
</PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile> <ClCompile>
@ -189,12 +201,17 @@
<ProjectReference> <ProjectReference>
<LinkLibraryDependencies>true</LinkLibraryDependencies> <LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference> </ProjectReference>
<PostBuildEvent>
<Command>copy "$(IntDir)$(ProjectName).res" "$(SolutionDir)Game\dep\nf.res"</Command>
<Message>Copying default NF resources</Message>
</PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="src\Application.cpp" /> <ClCompile Include="src\Application.cpp" />
<ClCompile Include="src\Gamestate.cpp" /> <ClCompile Include="src\Gamestate.cpp" />
<ClCompile Include="src\IntroGamestate.cpp" /> <ClCompile Include="src\IntroGamestate.cpp" />
<ClCompile Include="src\Renderer\Drawable.cpp" /> <ClCompile Include="src\Renderer\Drawable\Drawable.cpp" />
<ClCompile Include="src\Renderer\Drawable\Model.cpp" />
<ClCompile Include="src\Renderer\IndexBuffer.cpp" /> <ClCompile Include="src\Renderer\IndexBuffer.cpp" />
<ClCompile Include="src\Renderer\Renderer.cpp" /> <ClCompile Include="src\Renderer\Renderer.cpp" />
<ClCompile Include="src\Renderer\Shader.cpp" /> <ClCompile Include="src\Renderer\Shader.cpp" />
@ -203,6 +220,7 @@
<ClCompile Include="src\Utility.cpp" /> <ClCompile Include="src\Utility.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="src\include\resource.h" />
<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\Drawable.h" /> <ClInclude Include="src\include\Drawable.h" />
@ -210,6 +228,7 @@
<ClInclude Include="src\include\IndexBuffer.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\Model.h" />
<ClInclude Include="src\include\NothinFancy.h" /> <ClInclude Include="src\include\NothinFancy.h" />
<ClInclude Include="src\include\Renderer.h" /> <ClInclude Include="src\include\Renderer.h" />
<ClInclude Include="src\include\Shader.h" /> <ClInclude Include="src\include\Shader.h" />
@ -220,6 +239,13 @@
<ItemGroup> <ItemGroup>
<Natvis Include="NatvisFile.natvis" /> <Natvis Include="NatvisFile.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="res\defaultShader\fragment.shader" />
<None Include="res\defaultShader\vertex.shader" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="NothinFancy.rc" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>

View File

@ -39,12 +39,15 @@
<ClCompile Include="src\Renderer\Shader.cpp"> <ClCompile Include="src\Renderer\Shader.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\Renderer\Drawable.cpp"> <ClCompile Include="src\Renderer\Drawable\Drawable.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\Gamestate.cpp"> <ClCompile Include="src\Gamestate.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\Renderer\Drawable\Model.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="src\include\Config.h"> <ClInclude Include="src\include\Config.h">
@ -86,8 +89,23 @@
<ClInclude Include="src\include\Drawable.h"> <ClInclude Include="src\include\Drawable.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="src\include\Model.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\include\resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Natvis Include="NatvisFile.natvis" /> <Natvis Include="NatvisFile.natvis" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Include="res\defaultShader\vertex.shader" />
<None Include="res\defaultShader\fragment.shader" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="NothinFancy.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project> </Project>

View File

@ -1,31 +0,0 @@
#include "Drawable.h"
namespace nf {
Drawable::Drawable(const char* vertexShader, const char* fragmentShader, const void* vertexBufferData, const size_t vertexBufferSize, const void* indexBufferData, size_t indexBufferCount) :
m_shader(vertexShader, fragmentShader),
m_vao(),
m_ib(indexBufferData, indexBufferCount)
{
m_vao.addBuffer(vertexBufferData, vertexBufferSize);
m_vao.push<float>(2);
m_vao.finishBufferLayout();
}
unsigned int Drawable::getIndexCount() {
return m_ib.getCount();
}
void Drawable::bind() {
m_shader.bind();
m_vao.bind();
m_ib.bind();
}
Drawable::DrawableType Drawable::identity() {
return DrawableType::NF_NONE;
}
Drawable::~Drawable() {
}
}

View File

@ -0,0 +1,27 @@
#include "Drawable.h"
#include "Utility.h"
namespace nf {
Drawable::Drawable() {
Log("Drawable constructor");
}
Drawable::DrawableType Drawable::identity() {
return DrawableType::NF_NONE;
}
void Drawable::bind() {
Error("Tried to bind an invalid object!");
}
unsigned int Drawable::getIndexCount() {
return m_ib->getCount();
}
Drawable::~Drawable() {
delete m_vao;
delete m_ib;
delete m_shader;
}
}

View File

@ -0,0 +1,44 @@
#include "Model.h"
#include "Utility.h"
namespace nf {
Model::Model() {
}
void Model::create(const void* vertexBufferData, const size_t vertexBufferSize, const void* indexBufferData, size_t indexBufferCount, const char* vertexShader, const char* fragmentShader) {
m_vao = new VertexArray;
m_vao->addBuffer(vertexBufferData, vertexBufferSize);
m_vao->push<float>(2);
//TODO: Change this to 3
m_vao->finishBufferLayout();
m_ib = new IndexBuffer(indexBufferData, indexBufferCount);
if (vertexShader && fragmentShader)
m_shader = new Shader(vertexShader, fragmentShader);
}
Drawable::DrawableType Model::identity() {
return DrawableType::NF_GAME;
}
void Model::bind() {
if (m_vao == nullptr)
Error("Tried to bind uninitialized model!");
m_vao->bind();
m_ib->bind();
if (m_shader) {
m_shader->bind();
//TODO: Set uniforms here such as position and texture
}
}
bool Model::hasCustomShader() {
if (m_shader)
return true;
return false;
}
Model::~Model() {
}
}

View File

@ -5,6 +5,7 @@
#include "Application.h" #include "Application.h"
#include "Utility.h" #include "Utility.h"
#include "resource.h"
namespace nf { namespace nf {
Renderer::Renderer(Application* app) { Renderer::Renderer(Application* app) {
@ -51,15 +52,21 @@ namespace nf {
glEnable(GL_BLEND); glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
Win32Res vs(IDR_DEFAULTVERTEX);
m_defaultVertex = (const char*)vs.ptr;
Win32Res fs(IDR_DEFAULTFRAGMENT);
m_defaultFragment = (const char*)fs.ptr;
m_defaultShader = new Shader(m_defaultVertex, m_defaultFragment);
} }
void Renderer::render(Drawable* in) { void Renderer::render(Drawable& in) {
if (in == nullptr) if (&in == nullptr)
Error("Drawable object tried to render before being constructed!"); Error("Drawable object tried to render before being constructed!");
if (in->identity() == Drawable::DrawableType::NF_UI) if (in.identity() == Drawable::DrawableType::NF_UI)
m_lUI.push_back(in); m_lUI.push_back(&in);
else else
m_lGame.push_back(in); m_lGame.push_back(&in);
} }
void Renderer::doFrame() { void Renderer::doFrame() {
@ -67,8 +74,10 @@ namespace nf {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
for (Drawable* draw : m_lGame) { for (Drawable* draw : m_lGame) {
Drawable& curr = *draw; Model& curr = (Model&)*draw;
curr.bind(); curr.bind();
if (!curr.hasCustomShader())
m_defaultShader->bind();
glDrawElements(GL_TRIANGLES, curr.getIndexCount(), GL_UNSIGNED_INT, nullptr); glDrawElements(GL_TRIANGLES, curr.getIndexCount(), GL_UNSIGNED_INT, nullptr);
} }

View File

@ -42,7 +42,7 @@ namespace nf {
m_lastStride = 0; m_lastStride = 0;
} }
void VertexArray::bind(unsigned int buffer) { void VertexArray::bind() {
if (m_buffers.empty()) if (m_buffers.empty())
Error("No buffers and layouts added to vertex array before being bound!"); Error("No buffers and layouts added to vertex array before being bound!");
if (!m_lastBufferHasLayout) if (!m_lastBufferHasLayout)

View File

@ -54,6 +54,20 @@ namespace nf {
} }
#endif #endif
Win32Res::Win32Res(int id) :
ptr(nullptr),
size(0)
{
HRSRC src = FindResource(NULL, MAKEINTRESOURCE(id), RT_RCDATA);
if (src) {
HGLOBAL temp = LoadResource(NULL, src);
if (temp) {
ptr = LockResource(temp);
size = (size_t)SizeofResource(NULL, src);
}
}
}
const wchar_t* toWide(const char* in) { const wchar_t* toWide(const char* in) {
int length = std::strlen(in) + 1; int length = std::strlen(in) + 1;
wchar_t* out = new wchar_t[length]; wchar_t* out = new wchar_t[length];

View File

@ -9,17 +9,17 @@ namespace nf {
enum class DrawableType { enum class DrawableType {
NF_NONE, NF_GAME, NF_UI NF_NONE, NF_GAME, NF_UI
}; };
Drawable(const char* vertexShader, const char* fragmentShader, const void* vertexBuffer, const size_t vertexBufferSize, const void* indexBufferData, size_t indexBufferCount); //TODO: Construct using Shader code and data from obj
Drawable();
unsigned int getIndexCount();
void bind();
virtual DrawableType identity(); virtual DrawableType identity();
virtual void bind();
unsigned int getIndexCount();
~Drawable(); ~Drawable();
protected: protected:
//TODO: Add VAO, Shader, index buffer, etc. VertexArray* m_vao;
Shader m_shader; IndexBuffer* m_ib;
VertexArray m_vao; Shader* m_shader;
IndexBuffer m_ib;
}; };
} }

View File

@ -0,0 +1,18 @@
#pragma once
#include "Drawable.h"
namespace nf {
class Model : public Drawable {
public:
Model();
void create(const void* vertexBufferData, const size_t vertexBufferSize, const void* indexBufferData, size_t indexBufferCount, const char* vertexShader = nullptr, const char* fragmentShader = nullptr);
DrawableType identity() override;
void bind() override;
bool hasCustomShader();
~Model();
private:
};
}

View File

@ -3,5 +3,3 @@
#include "Application.h" #include "Application.h"
#include "Input.h" #include "Input.h"
#include "Utility.h" #include "Utility.h"
using namespace nf;

View File

@ -2,7 +2,7 @@
#include <vector> #include <vector>
#include <Windows.h> #include <Windows.h>
#include "Drawable.h" #include "Model.h"
namespace nf { namespace nf {
class Application; class Application;
@ -11,7 +11,7 @@ namespace nf {
public: public:
Renderer(Application* app); Renderer(Application* app);
void render(Drawable* in); void render(Drawable& in);
void doFrame(); void doFrame();
@ -24,5 +24,8 @@ namespace nf {
std::vector<Drawable*> m_lGame; std::vector<Drawable*> m_lGame;
std::vector<Drawable*> m_lUI; std::vector<Drawable*> m_lUI;
const char* m_defaultVertex;
const char* m_defaultFragment;
Shader* m_defaultShader;
}; };
} }

View File

@ -15,6 +15,5 @@ namespace nf {
private: private:
unsigned int m_id; unsigned int m_id;
std::unordered_map<const char*, unsigned int> m_uniformLocations; std::unordered_map<const char*, unsigned int> m_uniformLocations;
//TODO: Load from resource
}; };
} }

View File

@ -38,8 +38,15 @@ __debugbreak();}
std::exit(-1);} std::exit(-1);}
#endif #endif
struct Win32Res {
Win32Res(int id);
void* ptr;
size_t size;
};
const wchar_t* toWide(const char* in); const wchar_t* toWide(const char* in);
const wchar_t* toWide(const std::string& in); const wchar_t* toWide(const std::string& in);
bool writeFile(const char* filename, const std::string& in); bool writeFile(const char* filename, const std::string& in);
std::string readFile(const char* filename); std::string readFile(const char* filename);
} }

View File

@ -18,7 +18,7 @@ namespace nf {
template<typename T> template<typename T>
void push(unsigned int count); void push(unsigned int count);
void finishBufferLayout(); void finishBufferLayout();
void bind(unsigned int buffer = 1); void bind();
~VertexArray(); ~VertexArray();
private: private:

View File

@ -0,0 +1,17 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by NothinFancy.rc
//
#define IDR_DEFAULTVERTEX 201
#define IDR_DEFAULTFRAGMENT 202
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 103
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@ -16,14 +16,16 @@ Remember to use tasks (//TODO: )
*Separate project *Separate project
*Namespaced *Namespaced
Refactor NothinFancy.h to ONLY include stuff the frontend needs Refactor NothinFancy.h to ONLY include stuff the frontend needs
AND get rid of NFENGINE *AND get rid of NFENGINE
High CPU usage? *High CPU usage?
*Debug and log system *Debug and log system
*NatVis *NatVis
*Config changing *Config changing
*Alt-Enter *Alt-Enter
*File IO functions *File IO functions
*Keyboard and mouse click input *Keyboard and mouse click input
Separate Model and UIElement from Drawable
Entity and Camera classes
Mouse position input Mouse position input
Audio Audio
*Game states *Game states