網上找了很多OpenGL的書籍,教程的代碼,都編譯不過,主要原因是目前OpenGL對VS2015以上版本的支持性不是很好,所以目前最好還是用VS2013做開發比較好,
下面是OpenGL環境的配置及代碼:
1.下載相關的OpenGL包
2.新建工程,在工程目錄新建include和lib目錄
3.將相關包裏面的頭文件拷貝到include目錄下
4.將lib文件拷貝到lib文件夾下
5.將dll文件拷貝到Debug目錄(我採用的是Debug模式,如果是Release模式就拷貝到Release文件夾下)
6.設置項目屬性:包含目錄,庫目錄,依賴庫(就是lib目錄下所有的lib文件名)
7.新建文件,貼上以下代碼:
#include <stdio.h>
#include <iostream>
#include "gl/glew.h"
#include <string>
#include <SDL2\SDL.h>
using namespace std;
/*
SDL ------------> 操作系統
|
OPenGL ----> GPU
|
窗口
1.首先SDL發送所有賦予數據到操作系統中
2.由於繪製窗口的時候需要用到OpenGL的API,所以OpenGL會把
所有的命令發送到GPU中
3.由於GPU不能直接與窗口進行交互,所以需要用SDL_GLContext
通過SDL_GLContext,操作系統就可以通過GPU進行窗口的繪製了
*/
class Display
{
public:
Display(int width, int height, const string & title);// {
~Display();
void Update();//每一幀的繪製
bool IsClosed();
void Clear(float r, float g, float b, float a);//擦除圖像並繪製
private:
SDL_Window* m_window;
SDL_GLContext m_glContext;//可以通過GPU繪製窗口
bool m_isClosed;
};
Display::Display(int width, int height, const 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);
auto status = glewInit();
if (status != GLEW_OK)
{
std::cerr << "init failed" << std::endl;
}
m_isClosed = false;
}
void Display::Update(){
SDL_GL_SwapWindow(m_window);//交換緩衝區
SDL_Event e;
while (SDL_PollEvent(&e)){
if (e.type == SDL_QUIT)
{
m_isClosed = true;
}
}
}
Display::~Display() {
SDL_GL_DeleteContext(m_glContext);
SDL_DestroyWindow(m_window);
SDL_Quit();
}
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);
}
int main(int argc,char** argv) {
Display display(800, 600,"NameWindow");
while (!display.IsClosed())
{
display.Clear(0.4f, 1.0f, 1.0f, 1.0f);
display.Update();
}
getchar();
return 0;
}
代碼下載地址:http://download.csdn.net/download/a1317338022/10144275
注意運行代碼需要在VS2013上運行,不能是VS2015等