【opengl学习旅程#01】imgui+opengl项目准备+测试框架搭建

本文是作者重新学习OpenGL的笔记,主要记录了使用imgui与OpenGL结合的项目准备和测试框架搭建过程。作者分享了学习资源,如LearnOpenGL和Cherno的视频,并提供了GitHub项目链接,包括预配置的依赖库和生成项目的脚本。测试代码确保了glfw、imgui和glad的正确引入,未来将通过新类添加更多场景。
摘要由CSDN通过智能技术生成

碎碎念

准备毕业了,因为工作可能会跟opengl更多的打交道,所以在毕业前算是重新复习下opengl的知识点吧(其实之前也没怎么掌握过,感觉更像是重新学习hh)

学习资料:

内容的话感觉是尽量偏向learnopengl吧,毕竟比较熟悉,而且还有示例代码!太棒啦!!

感觉本系列更像是自己的一个笔记吧!记录下自己重新学习opengl的过程,之后再想想转到vulkan(看的云里雾里的hh)

当然文章会涉及imgui的相关知识,不过不重点介绍,重点还是opengl!!

项目准备

下一篇才会开始opengl的知识点,因为我觉得有一个好的,方便的框架才能更专注的学习各种知识点(当然这只是我个人的观点),因为之前我就因为各种环境的配置而浪费了蛮多的时间,所以我希望以后的我看到这一篇文章的时候能够直接拿过去用,拿过去测试,而不是重新又搭一遍环境这样子~

git项目:https://github.com/BadbadLoli/LRCLearnOpenglWithRedbook

各种版本:

  • glfw-3.3.4:用就完4儿了
  • opengl4.5:learnopengl里提到的是opengl3.3,而红宝书则是用到了4.5版本,会有更多高级特性,我会用到opengl4.5,用AIDA64 Extreme可以看看自己的显卡支不支持opengl各版本,我的是1650显卡,能支持到4.6
  • glad:learnopengl中用的是glad,红宝书的示例代码以及imgui的示例代码里用的是gl3w,我觉得用哪个都没关系啦,感觉用glad配置会方便点(learnopengl里关于如何配置glad非常详细)
  • imgui-1.83:这是看cherno老哥教程的时候意外看到的一个非常好用的gui库!
  • other:还有glmstb_image都是在learnopengl里有介绍到的

接下来准备项目,因为之前有看过cherno老哥的game engine系列(还没看完呢!)里面用到的premake我挺喜欢的,所以一开始的项目准备就照猫画虎的学过来了

第一个commit:https://github.com/BadbadLoli/LRCLearnOpenglWithRedbook/tree/ae847fdfd87d8d3a7c510e56bdd255c29899cc39

这里是把引入的库都在里面备好了,直接拉下来执行 GenerateProject.bat 即可,生成的是visual studio 2019的项目,如果用的是vs2018,用文本打开 GenerateProject.bat 把里面的2019改成2018即可

测试代码如下:

main.cpp

#include <GLFW/glfw3.h>
#include <glad/glad.h>

#include "imgui.h"
#include "imgui_impl_glfw.h"
#include "imgui_impl_opengl3.h"

#include <iostream>

int main(void)
{
   
    // glfw: initialize and configure
    glfwInit();

    GLFWwindow* window = glfwCreateWindow(640, 480, "LearnOpenGL", NULL, NULL);
    if (window == NULL)
    {
   
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);

    if (!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenGL是一种跨平台的图形API,SOIL是一个用于加载和保存图像的库,灯光、纹理和阴影是OpenGL中常用的图形渲染技术。其中,灯光可以模拟光照效果,纹理可以为物体表面添加图案或者颜色,阴影可以增强场景的真实感。如果想要使用OpenGL进行图形渲染,可以使用SOIL库加载纹理,然后使用OpenGL的灯光和阴影技术来渲染场景。 以下是一个使用OpenGL、SOIL、灯光、纹理和阴影的范例代码: ```C++ // OpenGL代码 #include <GL/glut.h> #include <SOIL/SOIL.h> GLuint texture; // 纹理ID void init(void) { glEnable(GL_DEPTH_TEST); // 开启深度测试 glEnable(GL_LIGHTING); // 开启灯光 glEnable(GL_LIGHT0); // 开启0号灯光 glEnable(GL_TEXTURE_2D); // 开启纹理 texture = SOIL_load_OGL_texture("texture.jpg", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y); // 加载纹理 } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清空颜色缓冲区和深度缓冲区 glMatrixMode(GL_MODELVIEW); // 模型视图矩阵模式 glLoadIdentity(); // 重置矩阵 gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); // 设置视角 GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; // 灯光位置 glLightfv(GL_LIGHT0, GL_POSITION, light_position); // 设置灯光位置 glBindTexture(GL_TEXTURE_2D, texture); // 绑定纹理 glBegin(GL_QUADS); // 绘制四边形 glNormal3f(0.0, 0.0, 1.0); // 设置法线 glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 0.0); // 设置纹理坐标和顶点坐标 glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 0.0); glTexCoord2f(1.0, 1.0); glVertex3f(1.0, 1.0, 0.0); glTexCoord2f(1.0, 0.0); glVertex3f(1.0, -1.0, 0.0); glEnd(); // 结束绘制 glutSwapBuffers(); // 交换缓冲区 } int main(int argc, char** argv) { glutInit(&argc, argv); // 初始化GLUT glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); // 设置显示模式 glutInitWindowSize(500, 500); // 设置窗口大小 glutCreateWindow("OpenGL"); // 创建窗口 init(); // 初始化 glutDisplayFunc(display); // 注册回调函数 glutMainLoop(); // 进入主循环 return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值