opengl sdl OpenGL开发第一步:验证开发环境并创建OpenGL窗口的具体操作

网安智编 厦门萤点网络科技 2026-03-17 00:13 22 0
本文已同步发表在CSDN: 在博主的上一篇文章中已经介绍了开发环境的搭建,本篇博文将验证开发环境是否搭建成功。同时,也是迈出开发的第一步。我们使用上一篇文章中新建的项目,创建一个窗口。 添加头文件.h。 #include #include...

本文已同步发表在CSDN

在博主的上一篇文章中已经介绍了开发环境的搭建,本篇博文将验证开发环境是否搭建成功。同时,也是迈出开发的第一步。我们使用上一篇文章中新建的项目,创建一个窗口。

添加头文件.h。

#include 
#include class Display
{
public:
Display(int width, int height, const std::string& title); void Clear(float r, float g, float b, float a);
void Update();
bool IsClosed(); virtual ~Display(); protected:
private:
Display(const Display& other) {}
Display& operator=(const Display& other) {} SDL_Window* m_window;
SDL_GLContext m_glContext;
bool m_isClosed;
};

添加显示类.cpp.

#include "display.h"
#include
#include 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);// 设置颜色的四个分量所占用内存为8bit
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)
{
std::cerr << "Glew failed to initialize" << std::endl;
} m_isClosed = false;
} Display::~Display()
{
SDL_GL_DeleteContext(m_glContext);
SDL_DestroyWindow(m_window);
SDL_Quit();
} void Display::Clear(float r, float g, float b, float a)
{
glClearColor(r, g, b, a);// 设置窗口背景色
glClear(GL_COLOR_BUFFER_BIT);// 清除颜色缓冲
} bool Display::IsClosed()
{
return m_isClosed;
} void Display::Update()
{
SDL_GL_SwapWindow(m_window); SDL_Event e; while (SDL_PollEvent(&e))
{
if (e.type == SDL_QUIT)
{
m_isClosed = true;
}
}
}

在main函数中调用显示方法。具体代码如下:

#include 
#include "display.h" int main(int argc, char** argv)
{
Display display(400, 300, "hello world!"); while (!display.IsClosed())
{
display.Clear(0.0f, 1.0f, 0.0f, 1.0f); display.Update();// 刷新
} return 0;
}

运行项目。可以使用快捷键F5来运行项目。运行后会显示一个绿色的窗口。如图:

声明:本文欢迎转载和分享,但是请尊重作者的劳动成果,转载分享时请注明出处: 。同时,码字实在不易,如果你觉得笔者分享的笔记对你有点用处,请顺手点击下方的推荐,谢谢!

系列(二)

创建窗口的更多相关文章 用多线程方法实现在MFC/WIN32中调用函数并创建窗口

原文链接: 1.用多线程方法实现在MFC/WIN32中调用函数并创建窗口 2. MFC 两个窗口显示与线程RC问题

Linux 实践篇-2 创建一个窗口

作为一个图形接口,并没有包含窗口的相关内容,但使用必须依赖窗口,即必须在窗口中绘制.这就要求我们必须了解一种窗口系统,但不同的操作系统提供的创建窗口的API都不相同,如果我们 ...

api 3.x for js 入门开发系列二十一气泡窗口信息动态配置模板

前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 api 3.x for js:esri 官网 api,里面详细的介绍 api 3.x 各个类 ...

创建 (WGL)

创建 (WGL) 创建 是初始化的一部分.只有在此之后才能使用. 关于的注意事项 创建 cont ...

使用GLFW创建全屏窗口

使用GLFW创建全屏窗口 GLFW库里面的()函数是用来创建窗口的函数. 这样函数的原型是: * (i ...

(二)——函数库简述

简述 1. 用到的库分为核心库.实用库.辅助库和工具库(不是必须) 2. 核心库 核心库包含有115个函数,函数名的前缀为gl ...

【游戏开发之二】常用API

常用API 开发基于的应用程序,必须先了解的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.库函数的命名方式非常有规律.所有 ...

OpenGL创建窗口教程_opengl sdl_OpenGL窗口创建步骤

实现二维图形和三维图形

是一个强大的底层图形库,其命令最初的时候使用C语言实现的.定义了一个图形程序接口,常用于制作处理三维图像,功能强大,调用方便,在图像处理十分受欢迎. 实现图形主要使用的是ope ...

VSTO之旅系列(二):创建Excel解决方案

原文:VSTO之旅系列(二):创建Excel解决方案 本专题概要 引言 创建VSTO项目 Excel对象模型 创建Excel外接程序 创建Excel文档级自定义项 小结 一.引言 也许很多朋友都没有听 ...

教程(2)——第一个窗口

环境终于配置好了,现在我们可以开始学习了. 首先,创建一个.cpp文件,然后打上几行#指令: # using st ...

随机推荐 适合的简单的C#状态机实现

目标 采用了 的架构,再把业务逻辑状态转移放到后端就有点违背初衷了.实际上只要后端Api的权限设置的好,把状态转移放到前端也未尝不可.我考虑的结果是,一般如果变更这个状态本身 ...

「标准」的 JS风格

首先,这份 JS风格指南已经在我司的前端团队实行半年多了: 其次,在程序员的世界里,从入行到资深都需要面对几个世界级的难题,如: 世界上最好的编辑器是什么? 是用空格还是 TAB?用空格还特么衍生出 ...

我们的项目中中文切词使用的是mmseg,有一个不满意的地方是jar包中的默认词典一定会被加载进去,当我对有些term有意见时,无法删除. mmseg中.java里一段代码保证了/d ...

iOS实现与的分离

之前每次用到的时候都会都需要在里面去实现 & 方法 单独方法还好不是很多, 但是再加上D ...

WCF学习之旅—WCF服务部署到应用程序(十)

上接  WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 .如下 ...

【转】利用反射快速给Model实体赋值

原文地址: 试想这样一个业务需求:有一张合同表,由于合同涉及内容比较多所以此表比较庞大,大概有 ...

.NET Core采用的全新配置系统: 如何实现配置与源文件的同步

配置的同步涉及到两个方面:第一,对原始的配置文件实施监控并在其发生变化之后从新加载配置:第二,配置重新加载之后及时通知应用程序进而使后者能够使用最新的配置.接下来我们利用一个简单的.NET Core控 ...

理清正则表达式--下篇

紧接:"理清正则表达式--上篇". 正则在类中的应用 类支持四种利用正则表达式的方法.分别是..match和s ...

基于的Linux内核移植 ---- 調試方法

作者信息 彭東林 郵箱: 平臺 Linux-4.4.4 uboot使用的是友善自帶的(爲了支持和設備樹做了稍許修改) 概述 這篇博客主要用於匯 ...

——安装及目录介绍

一.web web可以说,就是一套 请求->处理->响应 的流程.客户端使用浏览器(IE.等),通过网络()连接到服务器上,使用HTTP协议发起请求(Reque ...