美文网首页
opengl阶段小总结

opengl阶段小总结

作者: 飞焰 | 来源:发表于2018-10-18 23:28 被阅读0次

一、前言

  这是笔者第一次发表文章,对自己的学习做一定的归纳总结。对于撰写文章缺乏经验,学习上松松散散,希望能借此平台上来促进自身的学习,提高自身的学习自觉性和时间效率上的提高。

  最近处于失眠状态,精神不是很好,学习opengl已经有了一定的入门基础。之前的主要学习资料主要来自于其他人的简书文章,如果深入的学习和探究,还是能从其中获取不少收获的。这是链接资料的地址:从0开始的OpenGL学习

  本人非常热爱游戏开发,就学于西安电子科技大学,如果有志同道合者,非常欢迎一起联系共同探究问题。

二、涉及主题

 1.OpenGL开发的一个简单架构总结

2.针对从0开始的OpenGL学习(十七)-加载模型这篇文章进行自己的实践总结

3.实践过程中出现的bug

三、具体内容

 1.opengl的简单架构

    随着知识内容的增多 ,opengl程序扩展的非常快,把很多代码堆放在一起未尝不可,但后面必然会带来很多调试和扩展的麻烦。基于之前的学习内容,以及今后的文章知识扩展,自己对opengl程序做了一个简单的架构。

2.实践总结

   具体的实践内容看上述提供的文章即可,实践中多手动敲写代码,理顺整个处理过程,置身于哪个情境中,接下来应该做什么,为什么这么做。多想想其他的可能性,比如opengl中的函数调用顺序为什么是这样,两个函数的调用顺序能交换吗,什么函数的调用有前置依赖的函数。这些当然不需要强行去记忆,多方面去思考,去实践,多错几次或多动手,都能增加自身的印象,培养自身的编程直觉力。

   学习本身也是一个技巧性的活,接触一种新的定义,一种新的事物,大可按自己的猜想去定义它,去把它转换成自己能理解且当前能解释的过去的,之后如果出错,再重新进一步的深入了解,不能一开始执著于不懂而畏惧不前,兴趣是非常重要的,保持过程中的积极性,欢快且轻松的进行下去,而不是咬牙硬撑。

3.bug归纳

(1)文件目录组合错误

       文件路径中划分符出现为 '\'的,在具体的代码中写成‘\\'才表示'\',第一个'\'表示转义字符的意思。                           

       原本出错代码为:string realPath = directory + "\" + aiPath.C_Str();

       正确代码为:string realPath = directory + "\\" + aiPath.C_Str();

(2) fragment shader中uniform在结构体重定义错误

       原本错误的定义如下:

    修改后的正确定义:

(3)模型显示出错

     错误效果图:

   分析和尝试的措施:

       这个是在实践中碰到最麻烦的bug,模型的身体中部和腿部显示为黑色,其他部位的纹理显示正常。先从代码的方面考虑,可能代码中的资源加载出错,没有加载成功。从图中可以看出,模型的顶点位置数据没有问题,定位到贴图出错的方向。经过检查,Model里面的每个Mesh都成功加载了贴图资源,而且从模型资源本身来分析,leg或者body的顶点资源是一套的且贴图也是共用一张,不应该出现一边正常一边全黑的情况。考虑到纹理单元的情况,但纹理单元应该只是起到中介容器的作用,不造成影响。

    接下来把文题定位到着色器方面,应为着色器和渲染息息相关。经检查着色器代码没有什么问题,如果着色器中的纹理贴图资源没有问题,那么没有排查的因素还有纹理坐标出错的可能。在着色器中不好调试,我尝试了对fragment shader进行下面的修改:

运行之后看到如下结果:

很明显,纹理坐标的范围不在[0,1]之间了,经过重重的回溯排查,问题出现在了加载图片的属性设置上,错误代码如下:

修改后正确的代码:

相关文章

  • opengl阶段小总结

    一、前言 这是笔者第一次发表文章,对自己的学习做一定的归纳总结。对于撰写文章缺乏经验,学习上松松散散,希望能借此...

  • OpenGL(三)-OpenGL渲染流程解析

    OpenGL的渲染管线有哪些阶段,Shader(着色语言)到底发生在哪个阶段,这是OpenGL初学者需要搞清楚的。...

  • OpenGL ES学习阶段性总结

    前言 最近观看下面这本书有感,结合之前的学习,对OpenGL的知识进行回顾。 概念 帧缓存:接收渲染结果的缓冲区,...

  • 1.opengl入门-纹理

    到这一讲稍微复杂点了,做个阶段性的总结,加深记忆 参考:learnOpenG-纹理 opengl工作流理解:ope...

  • OpenGL ES入门1--主要基本概念总结

    在OpenGL ES开发中,有些概念会经常用到,在这里进行一个总结。 什么是OpenGL ES OpenGL(Op...

  • OpenGL ES 3.0-图形管线各阶段概述

    OpenGL ES 3.0实现了具有可编程着色功能的图形管线。下面概述OpenGL ES 3.0图形管线的各个阶段...

  • 【干货收藏】OpenGL ES 2.0 语法细则

    【干货收藏】OpenGL ES 2.0 语法细则 近期在学习 OpenGL 相关知识,在学习过程中做些总结 欢迎入...

  • java 学习阶段小总结

    三月提倡自学 ps阶段结束,对这几天java学习做了总结。 首先 1.自己学习java程序设计第四版,前两章介绍的...

  • 精力管理阶段小总结

    最近在学习时间管理的课程,每天坚持打卡,和一群人互相鼓励共勉。上一期的时间管理课程,我为了完成21天打卡持续不间断...

  • OpenGL - 几篇博文收录参考

    OpenGL中的坐标系openGl从零开始之基本图元第一个 OpenGL ES的小程序

网友评论

      本文标题:opengl阶段小总结

      本文链接:https://www.haomeiwen.com/subject/dcedoftx.html