OpenGL 入門教程實例

網上找了很多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等


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章