文章目录
LearnGL - 学习笔记目录
- my_init.h
- my_gl_check_error.h
- my_simple_load_tex.h
- 外部使用
本人才疏学浅,如有什么错误,望不吝指出。
上一篇:LearnGL - 05.2 - Texture - 实现类似2D UI流光动画。
这一篇:到这篇,我终于忍不了了,太多重复代码了。所以我们将一些可复用代码整理一下,一些通用型比较强的功能都统统封装一下。
这次先提取 Main 中的重复代码。
后面再提炼:GameObject、Mesh、Camera、Material、等。
以方便后续增加 OpenGL 学习项目的便利性。
但前提先增加对 OpenGL 设计规范的熟悉程度。
my_init.h初始化相关的内容:
- 创建窗体
- 创建 OpenGL Context
- 提供外部设置回调初始化
- 提供外部设置更新/绘制回调
- 提供外部设置退出程序前回调
- 提供执行入口:run()
对 GL 的错误状态的检测
my_simple_load_tex.h简单加载纹理
外部使用// jave.lin
#include
//#include"linmath.h"
// 把linmath.h 放在 iostream 之前include会有错误,所以放到iostream 后include就好了
// 而这个错误正式 xkeycheck.h 文件内 #error 提示的,所以可以使用 #define _XKEYCHECK_H 这个头文件的引用标记宏
// 就可以避免对 xkeycheck.h 头文件的 include 了。
#include
#include
#include
// 使用 stb_image.h 的加载库
// github 源码:https://github.com/nothings/stb/blob/master/stb_image.h
#define STB_IMAGE_IMPLEMENTATION
#include
// 将之前的打印版本信息代码包含一下
#include
#include
#include
using namespace my_util;
GLfloat vertices[] = {
// x, y, z
// 直接放4个顶点
-0.5f, -0.5f, 0.0f, // 第0个顶点,左下角
0.5f, -0.5f, 0.0f, // 第1个顶点,右下角
0.5f, 0.5f, 0.0f, // 第2个顶点,右上角
-0.5f, 0.5f, 0.0f, // 第3个顶点,左上角
};
GLfloat uvs[] = { // 顶点的 uv 坐标
0.0f, 0.0f, // 左下角
1.0f, 0.0f, // 右下角
1.0f, 1.0f, // 右上角
0.0f, 1.0f, // 左上角
};
GLuint indices[] = { // 注意索引从0开始!通过索引缓存来指定 图元 组成 用的 顶点有哪些
0, 1, 3, // 放置顶点的索引,第一个三角形
1, 2, 3 // 放置顶点的索引,第二个三角形
};
GLint vpos_location, vuv_location;
GLuint vertex_buffer[2], index_buffer;
GLuint vertex_array_object;
GLuint texture[3];
GLuint pixelBufObject;
GLint success, infoLogLen;
ShaderProgram* shaderProgram;
GLuint win_width, win_height;
void _stdcall OnBeforeInitWinCallback(InitInfo* info) {
info->width = win_width = 600;
info->height = win_height = 600;
info->print_version_info = true;
const char* title = "05_03_ExtracMain_GLFW_SrcCode";
strcpy_s(info->win_title, strlen(title) + 1, title);
}
void _stdcall OnInitCallback() {
// 打印支持最大的顶点支持的数量
int nrAttributes;
glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &nrAttributes);
std::cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?