I have attached my project in a .zip file if you wish to run it for yourself.
I am making a simple 2d top-down game and I am trying to run my code to see if my window creation is working and to see if my timer is also working with it. Every time I run it though I get errors. And when I fix those errors, more come, then the same errors keep appearing. I end up just going round in circles. Is there anyone who could help with this?
Errors when I build my code:
1>Renderer.cpp
1>c:\users\documents\opengl\game\game\renderer.h(15): error C2039: 'string': is not a member of 'std'
1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\ucrt\stddef.h(18): note: see declaration of 'std'
1>c:\users\documents\opengl\game\game\renderer.h(15): error C2061: syntax error: identifier 'string'
1>c:\users\documents\opengl\game\game\renderer.cpp(28): error C2511: 'bool Game::Rendering::initialize(int,int,bool,std::string)': overloaded member function not found in 'Game::Rendering'
1>c:\users\documents\opengl\game\game\renderer.h(9): note: see declaration of 'Game::Rendering'
1>c:\users\documents\opengl\game\game\renderer.cpp(35): error C2597: illegal reference to non-static member 'Game::Rendering::window'
1>c:\users\documents\opengl\game\game\renderer.cpp(36): error C2597: illegal reference to non-static member 'Game::Rendering::window'
1>c:\users\documents\opengl\game\game\renderer.cpp(43): error C2597: illegal reference to non-static member 'Game::Rendering::window'
1>Done building project "Game.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Renderer.cpp
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include "Renderer.h"
#include "Timer.h"
#include <iostream>
namespace Game
{
GLFWwindow* window;
/* Initialize the library */
Rendering::Rendering()
{
mClock = new Clock;
}
Rendering::~Rendering()
{
shutdown();
}
bool Rendering::initialize(uint width, uint height, bool fullscreen, std::string window_title)
{
if (!glfwInit()) {
return -1;
}
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
glViewport(0, 0, (GLsizei)width, (GLsizei)height);
glOrtho(0, (GLsizei)width, (GLsizei)height, 0, 1, -1);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glfwSwapInterval(1);
glEnable(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glEnable(GL_TEXTURE_2D);
glLoadIdentity();
return true;
}
bool Rendering::render()
{
/* Loop until the user closes the window */
if (!glfwWindowShouldClose(window))
return false;
/* Render here */
mClock->reset();
glfwPollEvents();
if (mClock->step())
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glfwSwapBuffers(window);
mClock->update();
}
return true;
}
void Rendering::shutdown()
{
glfwDestroyWindow(window);
glfwTerminate();
}
GLFWwindow* Rendering::getCurrentWindow()
{
return window;
}
}
Renderer.h
#pragma once
namespace Game
{
class Clock;
class Rendering
{
public:
Rendering();
~Rendering();
bool initialize(uint width, uint height, bool fullscreen, std::string window_title = "Rendering window");
void shutdown();
bool render();
GLFWwindow* getCurrentWindow();
private:
GLFWwindow * window;
Clock* mClock;
};
}
Timer.cpp
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <time.h>
#include "Timer.h"
namespace Game
{
Clock::Clock()
: mTicksPerSecond(50),
mSkipTics(1000 / mTicksPerSecond),
mMaxFrameSkip(10),
mLoops(0)
{
mLastTick = tick();
}
Clock::~Clock()
{
}
bool Clock::step()
{
if (tick() > mLastTick && mLoops < mMaxFrameSkip)
return true;
return false;
}
void Clock::reset()
{
mLoops = 0;
}
void Clock::update()
{
mLastTick += mSkipTics;
mLoops++;
}
clock_t Clock::tick()
{
return clock();
}
}
TImer.h
#pragma once
#include "Common.h"
namespace Game
{
class Clock
{
public:
Clock();
~Clock();
void update();
bool step();
void reset();
clock_t tick();
private:
uint mTicksPerSecond;
ufloat mSkipTics;
uint mMaxFrameSkip;
uint mLoops;
uint mLastTick;
};
}
Common.h
#pragma once
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <cmath>
#include <iostream>
namespace Game
{
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
typedef float ufloat;
}