- 博客(12)
- 收藏
- 关注
原创 山东大学22级项目实训《基于OpenGL的三维模型渲染引擎》8-设置材质菜单
我们需要对不同材质内容打开不同的菜单来调整材质,同时我们需要一些按钮选项能为我们的物体转换材质。
2025-06-13 10:03:30
294
原创 利用stb_image_write将OpenGL渲染画面导出
至于导出图像的工具,可以使用开源项目FreeImage,OpenCV,stb_image等来实现。在此我是用stb_image_write实现,其配置最为简单,只需要将头文件存到include/路径下就能直接访问,不需要额外的编译操作。OpenGL渲染画面都存储在帧缓冲中,如果我们需要读取渲染内容,并将其存储为一张PNG图像的话,我们需要访问帧缓冲内容,利用glReadPixels函数来读取像素数据。对于特定帧缓冲中的内容,我们可以先绑定帧缓冲的纹理附件,然后再对内容进行读取。
2025-06-12 21:07:11
334
原创 山东大学22届项目实训《基于OpenGL的三维模型渲染引擎》项目进展7
常规ImGui语句全部放在main函数中过于复杂,我们打算设计一个ImGui类来管理一些通用的UI绘制并整理一些ImGui语句,进一步去探索如何高效地连接openGL的绘制物体和ImGui部分。利用按钮更新物体材质选项,同时对面板的呈现内容进行更新操作。实现打开材质面板的信息显示的是物体材质的实时信息。然后利用Panel管理面板内容,根据传入参数不同做分化,以打开不同的面板。大部分的UI工作都是为了后续整合与调整做铺垫,做了很多实验性的工作。利用ImGui类,在原脚本中复杂的UI绘制语句就可以被大大缩减。
2025-06-11 15:16:26
399
原创 关于C++四种强制类型转换
其中static_cast还是比较常用于void*类型的转化,reinterpret_cast是和static_cast横向对比的,一般来说。我们定义了一个const,就是不想让其改变,若是我们在代码随便一个地方使用const_cast就能改变常量值,那么对于大的项目来说,可能就完全乱套了。查看运行结果,问题来了,指针p和指针q都是指向a变量的,指向地址相同,而且经过调试发现002CFAF4地址内的值确实由10被修改成了20,这是怎么一回事呢?那么const_cast<>()怎么发挥作用的呢?
2025-06-08 11:05:08
1554
原创 利用ImGui实现对物体位置、缩放等控制
其中,我使用Panel类存储一些面板特定的属性,包括,material,light等,对button绑定不同的回调函数,来达到打开不同面板的逻辑,不过,目前该功能需要我手动进行设置。然而,这只是最基础的UI设置,我们还需要更灵活的UI控制,例如,使用按钮打开一个新的面板,例如,材质设置面板,不同物体有不同的UI排布,这样的逻辑怎么做呢?例如,我们在ImGui类中,传入我们所定义的一个object*类表示渲染物体,然后在ImGui类中,对传入指针创建其位置控制和旋转角度控制的一个UI。回调绑定的手段有哪些?
2025-06-01 15:54:29
257
原创 Unity简易消息窗口(利用UnityAction添加事件回调触发)
在写一个养鱼项目中,购买鱼类以及销售鱼类,常理来说我们都需要确认是否真的要购买。像这类事务都有一般都有一个消息窗口以增加交互的确认,没有的话就很有可能误操作。
2025-05-02 14:39:25
392
原创 认识帧缓冲
前置知识:深度缓冲、模板缓冲、纹理有了深度缓冲,模板缓冲的设置,我们对OpenGL的渲染画面已经有了很大的可操纵性。我们可以通过深度缓冲的开闭,来确定渲染时期是否发生像素的遮挡关系,写入深度缓冲后,只有小于当前深度的片段才会被渲染,没通过深度测试则会被丢弃,确保渲染顺序不会影响实际的空间效果。利用模板缓冲,我们可以限制图像渲染的画面,在learnopengl课程中,你也可以效仿课程中的例子,做一个利用模板缓冲实现的描边效果。在前二者中,都存储了渲染中物体某些重要信息,来去实现一些渲染中的设置与效果。
2025-04-21 20:40:52
1292
原创 ImGui自定义组件以及相关回调函数(类事件)绑定
有一个B站的搬运,实现了一些效果,能够对ImGui的button进行一个自定义的效果。函数整体是这样的而从这之中,我们可以了解到UI的定制可以使用哪些脚本来实现进一步拓展的需求与功能利用回调函数进行事件注册,确保对某label的回调触发,也可以作为游戏制作与页面制作的一种思路不调用functional头文件的做法这里callback可以传入一个int表示物体id然后执行是否渲染,或者说把他加入移除渲染队列。
2025-04-21 18:03:26
1175
原创 ImGui以及其控件使用
对于ImGui的使用,我们可以在网上找到很多关于配置的简单例子,而对于一些复杂的UI排版,则没有具体教程。对于此类内容的学习实际上需要开发者去阅读Show_Demo_window函数下的代码来了解具体组件的使用和设置。结合截屏和文本阅读,很多代码的作用都会变得清晰明了。
2025-04-21 17:34:57
333
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人