2.x终于照着教程,成功使用OpenGL ES 绘制纹理贴图,增加了灰度图
在之前成功绘制变色的几何图形之后,今天利用Openg ES的可编程管线绘制出第一张纹理。学校时候不知道OpenGL的重要性,怕晦涩的语法,没有跟老师学习OpenGL的环境配置,如今只能利用cocos2dx 2.2.3 配置好的环境学习OpenGL ES。源代码来自《cocos2d-x高级开发教程》,注释是本人的。
要形成屏幕的像素也是个矩形(或者圆形区域)
所以我们只要记住,MaxS是纹理宽度除以对于的屏幕像素点的宽度,也就是纹理铺放在x轴像素点个数,对应为纹理坐标的x轴
MaxT是纹理高度度除以对于的屏幕像素点高度,也就是<span style="font-family: Arial, Helvetica, sans-serif;">纹理铺放在x轴像素点个数,对应为纹理坐标的y轴
这篇博文的重点再有已有opengl入门的情况下,了解CCTexture2D的参数意思就可以随意绘制纹理了。
void HelloWorld::draw()
{//opengl世界坐标轴的读取和绘制默认是逆时针顺序static GLfloat vertext[] = {0.0f,0.0f,0.0f,480.0f,0.0f,0.0f,0.0f,320.0f,0.0f,480.0f,320.0f,0.0f};//但是纹理的读取也是逆时针,只是EG是用三角形作为基础图形去绘制其他图形,方向先绘制下三角,再绘制上三角!!!之前这里搞错了。希望大家别被我误导了static GLfloat coord[] = {0.0f,1.0f,1.0f,1.0f,0.0f,0.0f,1.0f,0.0f};static GLfloat colors[] = {1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,};
<span style="white-space:pre"> </span>
假设换成灰度图的话,float gray = r*0.3+g*0.59+b*0.11;将上诉的1.0f全部换成gray,就是相应的灰度图了
//初始化纹理,即将纹理映射至openGL ES的世界坐标系中static CCTexture2D * texture2d = CCTextureCache::sharedTextureCache()->addImage("HelloWorld.png");coord[2] = coord[6] = texture2d->getMaxS();coord[1] = coord[3] = texture2d->getMaxT();
//设置着色器//开启着色器,坐标、颜色、纹理ccGLEnableVertexAttribs(kCCVertexAttribFlag_PosColorTex);//目前没看懂具体执行了的use()操作,启用可编程管线??texture2d->getShaderProgram()->use();//在2.2.3中setUniformsForBuiltins 替换掉 setUniformForModelViewPorjectionMatrix(),//设置统一属性,即M模型、V视图、P投影,完成从Opengl的世界坐标到屏幕坐标的映射texture2d->getShaderProgram()->setUniformsForBuiltins();//绑定纹理,texture2d->getName() 纹理在内存或显存中存储的下标(应该是下标,我没看纹理加载,还不了解GPU和CPU的通信)glBindTexture(GL_TEXTURE_2D,texture2d->getName());//设置顶点,每个顶点向量维数为3,数据类型为GL_FLOAT,不归一化(真实物理坐标不能归一化),两个个顶点间的偏移量为0,glVertexAttribPointer(kCCVertexAttrib_Position,3,GL_FLOAT,GL_FALSE,0,vertext);glVertexAttribPointer(kCCVertexAttrib_TexCoords,2,GL_FLOAT,GL_FALSE,0,coord);glVertexAttribPointer(kCCVertexAttrib_Color,4,GL_FLOAT,GL_FALSE,0,colors);//绘图,从下标0开始,有4个顶点glDrawArrays(GL_TRIANGLE_STRIP,0,4);}
重载void draw (void) 即可。可能暂时停止更新博客,先主要着手于游戏实现,而不是分享。
下面是贴转载内容:http://blog.csdn.net/wusheng520/article/details/8109284
CCTexture2D的成员变量:
m_tContentSize 图片的原始大小
m_uPixelsWide 大于等于原始宽度的最接近原始宽度的2的幂次方
m_uPixelsHeight 大于等于原始高度的最接近原始高度的2的幂次方
m_fMaxS m_tContentSize .x / m_uPixelsWide
m_fMaxT m_tContentSize .y / m_uPixelsHeight
2.x终于照着教程,成功使用OpenGL ES 绘制纹理贴图,增加了灰度图相关推荐
- 2.x最终照着教程,成功使用OpenGL ES 绘制纹理贴图,添加了灰度图
在之前成功绘制变色的几何图形之后,今天利用Openg ES的可编程管线绘制出第一张纹理. 学校时候不知道OpenGL的重要性,怕晦涩的语法.没有跟老师学习OpenGL的环境配置,现在仅仅能利用coco ...
- 【Qt for Android】OpenGL ES 绘制彩色立方体
Qt 内置对OpenGL ES的支持.选用Qt进行OpenGL ES的开发是很方便的,很多辅助类都已经具备.从Qt 5.0開始添加了一个QWindow类,该类既能够使用OpenGL绘制3D图形,也能够 ...
- OpenGL ES:绘制函数glDrawArrays 和 glDrawElements 的区别
from:https://www.jianshu.com/p/4d02c2cd21ea 写文章注册登录 首页 下载App OpenGL ES:绘制函数glDrawArrays 和 glDrawElem ...
- 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...
- 安卓学习笔记37:利用OpenGL ES绘制平面图形
文章目录 零.学习目标 一.OpenGL概述 二.了解三维直角坐标系 三.案例演示 - 绘制三角形 (一)运行效果 (二)实现步骤 1.创建安卓应用[DrawTriangle] 2.建模:创建三角形类 ...
- Android Studio OpenGL ES绘制三棱锥/四面体的多纹理贴图 每个面使用一张图片渲染
本文参考了王刚的<疯狂Android讲义(第3版)>P554-P559 要求:利用OpenGL ES绘制一个三棱锥,并对每个面进行纹理贴图,每个面使用不同的图片进行渲染. 环境:Andro ...
- OpenGL ES 绘制图片
流程 1.编写着色器(顶点着色器和片元着色器) 2.设置顶点.纹理坐标 3.加载着色器 4.创建纹理 5.渲染图片 OpenGL ES 中的顶点坐标与纹理坐标 绘制四边形 规定:图形环绕方向必须一致 ...
- opengl android 纹理贴图 代码,Android 使用opengl es的纹理贴图白屏问题请教。
各位大侠好: 我在使用open gl es的做显示的时候,发现一个问题,请各位帮助一下,谢谢. 环境:opengl es 1.x,2D的模式显示纹理图片. 在LG-P990,HTC-C510E上显示附 ...
- android opengl es 绘制余弦曲线,Android OpenGL ES - 绘制线、面
前言 之前一篇文章讲了如何绘制点,所谓两点成线,三点成面.一个立体图形就是由很多面组成,在OpenGL ES中,面特指一个三角形. 绘制调用glDrawArrays(int mode, int fir ...
最新文章
- 无法进入一个空框_win10电脑开机进入不了系统如何解决?
- springwebflux 页面_Spring WebFlux 入门
- python入门新手项目-新手零基础入门Python项目实战
- VLC-DSS搭建直播系统中链路断开影响测试
- Flutter 1.17 | 2020 首个稳定版发布!
- 济南计算机机械工程学校,济南电子机械工程学校
- java.util接口_函数接口– Java 8中java.util.function包中的函数接口
- 2015年创业中遇到的技术问题:141-150
- tensor.view(*shape) 函数
- 邮件代理发送功能更新和Exchange 6月份补丁更新提示
- Tomcat开发技术之与HTTP服务器的集成
- 12月22号至27号进度报告
- meta分析stata教程
- 概念模型与E-R模型
- Mac顶部菜单栏(Menubar)卡死
- 【贪心】Songs Compression
- android8.1 BLE从设备开发MAC地址随机问题
- MES系统的应用(中)
- RabbitMQ管理界面基本操作
- 计算机系统应用的书,基于个性化图书推荐的协同过滤算法
热门文章
- Java开发游戏脚本(第五卷)
- 关于分类模型评估指标的理解
- Linux的公平调度
- JMeter 基本身份验证
- 论文“Matrix Formulation for Minimum Response of Undamped Structures”参考代码
- 剑指offer 专项突破版 74、合并区间
- 多线程实例之售卖车票
- android 自定义拍照模糊,Android自定义相机拍照模糊处理
- 计算机能辅修经济学吗,现在大二本科在读,计算机系,想考西安交大经济学研究生,但不知如何着手…请高人指点指点...
- 如何选择合适的电烙铁