版权声明:本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名elloop(包含链接)
作者是现在对相关知识理解还不是很深入,后续会不断完善。因此文中内容仅供参考,具体的知识点请以OpenGL的官方文档为准
前言
本文介绍了如何使用OpenGL ES 2.0 API实现纹理图片的叠加显示效果。
#开发环境及相关库
-
vs2013 / C++
-
libEGL.lib : windows上的OpenGL ES环境
-
libGLESv2.lib : OpenGL ES 2.0 API
-
d3dcompiler_47.dll : 使用DX来模拟OpenGL
-
FreeImage.lib/dll : 加载纹理数据
-
代码架构: 仿cocos2d-x结构,启动点在ELAppdelegate.cpp.
效果图:
实现代码:
MultiTexture.h
MultiTexture.cpp
shader
顶点着色器:multi_texture_vs.glsl
片段着色器:multi_texture_fs.glsl
有空的时候再来补充注释及说明,想了解更多内容请参考源码部分。
遇到的问题
在绑定纹理的时候,误把glBindTexture(GL_TEXTURE_2D, &textureId)
误写为glBindTexture(GL_SAMPLER_2D, &textureId)
, 导致只能加载最后一次调用loadTexture()的纹理。今后不会混淆`GL_TEXTURE_2D`和`GL_SAMPLER_2D`了。
完整项目源码
源码中包含
如果源码对您有帮助,请帮忙在github上给我点个Star, 感谢 :)
在这里也能看到这篇文章:github博客, CSDN博客, 欢迎访问