前天晚上,花了一个小时解决了编译Assimp时的报错问题,顺便写了篇随笔。今天继续OpenGL的学习,不出意料地再次踩坑,好在最后都解决了。

  今天主要学习使用Assimp加载模型,原理很简单:一个模型可以看作是许多个网格(Mesh)组成,只需要把这些Mesh画出来就好。写好代码后点击编译,出现了最让人咬牙切齿的一幕:只能看到背景色。

  说实话,这种情况比直接报错还难受,报错最起码还能大概知道错在哪儿。是贴图没有成功加载吗?如果只是贴图加载失败,应该会出现一块一块的黑色,不应该什么都看不到。

  在我的代码中,实现了一个Model类和一个Mesh类,其中Model类保存着一个Mesh类的vector.

  首先我采用的是“肉眼debug”, 一行一行地与参考代码比较,没找到问题。没办法,慢慢来吧。

  先检查Mesh类,自己编了一些数据,实例化一个Mesh对象,并把它画到屏幕上,果然还是看不到任何东西,这样的话,应该是Mesh类出了问题。

  最后找到了问题所在:绑定数据前,忘了绑定VAO. 加上下面这行代码:

glBindVertexArray(mVAO);

  点击运行,可以看到以下画面:

  太好了,终于有东西出来了!但我这个机器人看起来不太对劲:它应该有双红色的玻璃眼睛(图中看不到),而且这个机器人看起来不太完整,有些部位看上去少了些什么。

  这下应该是贴图的问题了吧,我又不自觉地联想到贴图上,但是经过测试,贴图文件都被正常读取。突然,我灵光一闪:这种效果好像在哪里见过?对了,是不是忘开深度测试了?

  检查代码,果然没有启用深度测试,加上下面这行代码:

glEnable(GL_DEPTH_TEST);

  启用后,模型正常显示:

  光是改这两个bug就花了两个小时,又是被自己蠢哭的一天,好气哦。

捉虫日记:使用OpenGL加载模型 (2023/12/11)的更多相关文章

  1. 使用vs2022编译assimp,并基于OpenGL加载模型

    Assimp :全称为Open Asset Import Library,这是一个模型加载库,可以导入几十种不同格式的模型文件(同样也可以导出部分模型格式).只要Assimp加载完了模型文件,我们就可 ...

  2. NeHe OpenGL教程 第三十一课:加载模型

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  3. [iTyran原创]iPhone中OpenGL ES显示3DS MAX模型之二:lib3ds加载模型

    [iTyran原创]iPhone中OpenGL ES显示3DS MAX模型之二:lib3ds加载模型 作者:u0u0 - iTyran 在上一节中,我们分析了OBJ格式.OBJ格式优点是文本形式,可读 ...

  4. openGL加载obj文件+绘制大脑表层+高亮染色

    绘制大脑表层并高亮染色的工作是以openGL加载obj文件为基础的,这里是我们用到的原始程序:只能加载一个obj文件的demo. 然而,一个完整的大脑表层是由很多分区组成的,因此我们的程序需要支持两个 ...

  5. tensorflow学习笔记2:c++程序静态链接tensorflow库加载模型文件

    首先需要搞定tensorflow c++库,搜了一遍没有找到现成的包,于是下载tensorflow的源码开始编译: tensorflow的contrib中有一个makefile项目,极大的简化的接下来 ...

  6. 深度学习原理与框架-猫狗图像识别-卷积神经网络(代码) 1.cv2.resize(图片压缩) 2..get_shape()[1:4].num_elements(获得最后三维度之和) 3.saver.save(训练参数的保存) 4.tf.train.import_meta_graph(加载模型结构) 5.saver.restore(训练参数载入)

    1.cv2.resize(image, (image_size, image_size), 0, 0, cv2.INTER_LINEAR) 参数说明:image表示输入图片,image_size表示变 ...

  7. PyTorch保存模型与加载模型+Finetune预训练模型使用

    Pytorch 保存模型与加载模型 PyTorch之保存加载模型 参数初始化参 数的初始化其实就是对参数赋值.而我们需要学习的参数其实都是Variable,它其实是对Tensor的封装,同时提供了da ...

  8. [Pytorch]Pytorch 保存模型与加载模型(转)

    转自:知乎 目录: 保存模型与加载模型 冻结一部分参数,训练另一部分参数 采用不同的学习率进行训练 1.保存模型与加载 简单的保存与加载方法: # 保存整个网络 torch.save(net, PAT ...

  9. tensorflowjs下载源文件到本地不能加载模型解决方案

    大多数情况(非源文件错误)下载源文件到本地不能加载模型,那么你可能需要搭建一个本地WEB服务器. 1.安装apache或ngnix,可以参照这个博客 2.强烈推荐一个Chrome插件Web Serve ...

  10. WPF 3D动态加载模型文件

    原文:WPF 3D动态加载模型文件 这篇文章需要读者对WPF 3D有一个基本了解,至少看过官方的MSDN例子. 一般来说关于WPF使用3D的例子,都是下面的流程: 1.美工用3DMAX做好模型,生成一 ...

随机推荐

  1. L3-013 非常弹的球 (30 分) (math)

    刚上高一的森森为了学好物理,买了一个"非常弹"的球.虽然说是非常弹的球,其实也就是一般的弹力球而已.森森玩了一会儿弹力球后突然想到,假如他在地上用力弹球,球最远能弹到多远去呢?他不 ...

  2. Python | PyQt5 Could not find the Qt platform plugin windows错误解决方法

    在写Python大作业的时候发现运行PyQt5时有报错 出现该问题的原因是环境变量没有添加. 解决方法: 在环境变量中增加: QT_QPA_PLATFORM_PLUGIN_PATH 样例路径(这里填你 ...

  3. redis 持久化机制及配置

    本文为博主原创,未经允许不得转载: 目录: 1. RDB 2. AOF(append-only file) 3. RDB 和 AOF 特性比对 4. 混合持久化 redis 数据持久化共有两种方式:一 ...

  4. golang将字符串进行md5加密

    最近写项目要把登录密码进行md5加密保存,在golang里面的写法略有不同,再次记录一下. package main import ( "crypto/md5" "enc ...

  5. Oracle ORA-01861: 文字与格式字符串不匹配(日期格式导致的问题)

    1.问题 如图所示,Oracle ORA-01861: 文字与格式字符串不匹配.这里的日期格式出现问题,导致了ORA-01861错误. 2.解决方式 原因: 如果直接按照字符串方式,或者直接使用to_ ...

  6. CSS - 使用CSS 3D属性来完成页面视差滚动效果。

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 今天是个好日子,TaxCore(POS软件)备案指北

    POS软件是什么?你好意思吗,还在用老掉牙的Winform. 关于POS 销售终端--POS(point of sale)是一种多功能终端,把它安装在信用卡的特约商户和受理网点中与计算机联成网络,就能 ...

  8. [转帖]Nginx 安全优化

    目录 前言 1.使用 SSL/TLS 证书 2.使用安全密钥交换机制 3.禁用旧的 SSL/TLS 协议 4.禁用 SSL/TLS 弱密码套件 5.禁用不需要的 HTTP 方法 6.防止缓冲区溢出攻击 ...

  9. [转帖]Kafka故障之磁盘打满

    https://www.jianshu.com/p/095e820361ae 问:磁盘打满扩容后能正常重启吗?答:不一定 要看文件格式是否损坏(log.index等).如果损坏会报错:index fi ...

  10. [转帖]使用 TiDB 读取 TiFlash

    https://docs.pingcap.com/zh/tidb/stable/use-tidb-to-read-tiflash 本文档介绍如何使用 TiDB 读取 TiFlash 副本. TiDB ...