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   





转载于:https://www.cnblogs.com/zfyouxi/p/5254498.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# Dapper 简单实例

/// <summary>/// 分页信息/// </summary>public class PageInfo<T>{/// <summary>/// 分页信息/// </summary>public PageInfo(){}/// <summary>/// 总页数/// </summary>public long TotalCount{get; set;}/// <summary>///…

Angular 星级评分组件

一、需求演变及描述&#xff1a; 1. 有一个“客户对公司的总体评价”的字段&#xff08;evalutation&#xff09;。字段为枚举类型&#xff0c;0-5&#xff0c;对应关系为&#xff1a;0-暂无评价&#xff0c;1-很差&#xff0c;2-差&#xff0c;3-一般&#xff0c;4-好&#xf…

计算机网络怎么查看连接打印机驱动,如何检测网络打印机是否已成功连接到计算机[检测方法]...

大概很多婴儿都像以前的编辑一样. 使用网络打印机时&#xff0c;有时它们可​​以打印打印机没有和电脑连接&#xff0c;有时却不能. 那么如何检测网络打印机是否已成功连接到计算机&#xff1f;跟随编辑器往下看.系统反复提示“无法打印”&#xff0c;因此本来很忙的小修几乎快…

eclipse python插件_pydev插件下载-eclipse中的python插件下载6.0.0 官网最新版-西西软件下载...

在eclipse中安装python所需的插件。PyDev for Eclipse 是一个功能强大且易用的 Eclipse Python IDE 插件。利用 PyDev 插件把 Eclipse 变为功能强大且易用的 Python IDE&#xff0c;如何利用其进行 Python 程序的开发和调试。安装方法&#xff1a;一种比较随意的方法就是把压缩…

a - 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历_数据结构--图

故事凌 今天基本知识点图可说是所有数据结构里面知识点最丰富的一个, 自己笨的知识点如下:阶(oRDER), 度: 出度(out-Degree), 入度(in-Degree)树(Tree), 森林(Forest), 环(Loop)有向图(Directed Graph), 无向图(Undirected Graph), 完全有向图, 完全无向图连通图(Connected Gra…

vim: vimrc

2019独角兽企业重金招聘Python工程师标准>>> 打造vim CIDE http://blog.csdn.net/doc_sgl/article/details/47205779 转载于:https://my.oschina.net/u/2528742/blog/843176

计算机二级考试试题在线看,【TOP182015年全国计算机二级考试试题题库.doc文档免费在线阅读材料】...

TOP182015年全国计算机二级考试试题题库.doc文档免费在线阅读《2015年全国计算机二级考试试题题库.doc》由会员分享&#xff0c;可免费在线阅读全文&#xff0c;更多与《TOP182015年全国计算机二级考试试题题库.doc文档免费在线阅读》相关文档资源请在帮帮文库(www.woc88.com)数…

使用flask_socketio实现客户端间即时通信

关于flask_socketio的入门可以看我的上一篇博客《使用flask_socketio实现服务端向客户端定时推送》 用socketio实现即时通信十分简单&#xff0c;只需要客户端发送用户输入的信息到后端&#xff0c;后端再将此信息广播到所有连接到此命名域的客户端就可以了。 from flask impor…

java继承原理内存角度_Java基础知识巩固

最近发现自己的Java基础知识还是有点薄弱&#xff0c;刚好有点空闲时间进行再补一补&#xff0c;然后进行整理一下&#xff0c;方便自己以后复习。其实个人认为Java基础还是很重要的&#xff0c;不管从事Java后端开发还是Android开发&#xff0c;Java这块的基础还是重中之重&am…

python函数对变量的作用_python函数对变量的作用及遵循的原则

1.全局变量和局部变量全局变量&#xff1a;指在函数之外定义的变量&#xff0c;一般没有缩进&#xff0c;在程序执行的全过程有效局部变量&#xff1a;指在函数内部使用的变量&#xff0c;仅在函数内部有效&#xff0c;当函数退出时变量将不存在例如&#xff1a;1 n1 #n是全局变…

不用开发实现RDS RDWeb门户美化和个性化

个性化RDWeb界面RDWeb原生界面相对比较简洁&#xff0c;每个企业部署的RDWeb都是千篇一律的&#xff0c;有些用户可能希望将网页装饰得个性化点。在谈到自定义Web界面&#xff0c;第一反应可能是使用代码进行编写&#xff0c;但是这里要和大家分享的是无代码美化和自定义RDWeb界…

安卓使用富文本编辑器html5,Android富文本编辑器,图文详细

Android富文本编辑器,图文详细资源下载此资源下载价格为3D币&#xff0c;请先登录资源文件列表AndroidRichTextEditor/.classpath , 475AndroidRichTextEditor/.project , 857AndroidRichTextEditor/AndroidManifest.xml , 1281AndroidRichTextEditor/bin/AndroidManifest.xml …

python pip安装pyinstaller报错_pip install pyinstaller (安装过程报错解决)

安装目标&#xff1a;pip install pyinstaller报错内容&#xff1a;WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.You should consider upgrading via the python -m pip install --upgrade pip command.解决方法&#xff1a;运行--->c…

[SQL]LeetCode183. 从不订购的客户 | Customers Who Never Order

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

access四舍五入取整round_access中round函数怎么用

access中round函数怎么用?access中round函数的用法&#xff01;下面&#xff0c;小编通过示例来给大家介绍access中round函数的用法。工具/原料access 2007方法/步骤打开access应用程序&#xff0c;新建一个数据库&#xff0c;并新建如下图所示的worker数据表&#xff0c;用于…

其他大神的配置 nginx 配置参考

2019独角兽企业重金招聘Python工程师标准>>> user nginx nginx; worker_processes 2; #error_log logs/error.log; error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; google_perftools_profiles /tmp/tcmalloc; worker_rlim…

小孩用计算机做作业怎么表达,计算机作业

满意答案尧Dreaman夕2014.09.25采纳率&#xff1a;40% 等级&#xff1a;10已帮助&#xff1a;1121人Windows中可以设置、控制计算机硬件配置和修改桌面布局的应用程序是( D)A) Word B) Excel C)资源管理器 D)控制面板多窗口的切换可以通过(D )来实现A)在任务栏上用鼠标单击右…

Delphi读写二进制文件

http://www.cnblogs.com/hnxxcxg/p/3691742.html 二进制文件&#xff08;也叫类型文件&#xff09;&#xff0c;二进制文件是由一批同一类型的数据组成的一个数据序列&#xff0c;就是说一个具体的二进制文件只能存放同一种类型的数据。type TMember record Name : string[10]…

[No0000178]改善C#程序的建议1:非用ICloneable不可的理由

好吧&#xff0c;我承认&#xff0c;这是一个反标题&#xff0c;实际的情况是&#xff1a;我找不到一个非用ICloneable不可的理由。事实上&#xff0c;接口ICloneable还会带来误解&#xff0c;因为它只有一个Clone方法。 我们都知道&#xff0c;对象的拷贝分为&#xff1a;浅拷…

uniapp网络请求获取数据_2.uni-app 发起网络请求

## uni.request(OBJECT)发起网络请求。**OBJECT 参数说明**![](https://box.kancloud.cn/a90bf284df069eddde4019c04db7d627_861x475.png)**success 返回参数说明**![](https://box.kancloud.cn/10d44a6d100bb3833b22f2d41e85d8eb_861x165.png)**data 数据说明**最终发送给服务…