
#pragma once
#include "string"
#include "SDL2/SDL.h"
class Display
{
public:
Display(int width,int height,const std::string& title);
void Update();
bool IsClosed();
void Clear(float r,float g,float b, float a);
~Display();
private:
SDL_Window* m_window;
SDL_GLContext m_glContext;
bool m_isClosed;
};
#include "stdafx.h"
#include "Display.h"
#include "GL/glew.h"
#include "iostream"
using namespace std;
Display::Display(int width, int height, const std::string& title)
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE,8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 32);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
m_window = SDL_CreateWindow(title.c_str(),SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,width,height,SDL_WINDOW_OPENGL);
m_glContext = SDL_GL_CreateContext(m_window);
GLenum status = glewInit();
if (status!=GLEW_OK)
{
cout << "Glew Init Failure" << endl;
}
m_isClosed = false;
}
Display::~Display()
{
SDL_GL_DeleteContext(m_glContext);
SDL_DestroyWindow(m_window);
SDL_Quit();
}
void Display::Update()
{
SDL_GL_SwapWindow(m_window);
SDL_Event e;
while (SDL_PollEvent(&e))
{
if (e.type==SDL_QUIT)
{
m_isClosed = true;
}
}
}
bool Display::IsClosed()
{
return m_isClosed;
}
void Display::Clear(float r, float g, float b, float a)
{
glClearColor(r,g,b,a);
glClear(GL_COLOR_BUFFER_BIT);
}
#include "stdafx.h"
#include<iostream>
#include "Gl\glew.h"
#include "Display.h"
using namespace std;
int main(int argc,char** argv)
{
Display display(800,600,"XiaoKunZhang");
while (display.IsClosed())
{
display.Clear(0.0f, 0.15f, 0.3f, 1.0f);
display.Update();
}
return 0;
}