OpenGL 入门教程实例

本文介绍了如何在Visual Studio 2013中配置OpenGL环境,包括下载必要的包,创建工程目录,拷贝头文件、库文件和dll,并详细说明了设置项目属性的步骤。提供了一个OpenGL入门代码示例,强调该代码只能在VS2013上运行,不适用于更高版本的Visual Studio。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上找了很多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.youkuaiyun.com/download/a1317338022/10144275

注意运行代码需要在VS2013上运行,不能是VS2015等


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值