cocos2dx给DrawNode的shader传递Texture2D
来源:互联网 发布:五轴五联动好编程吗 编辑:程序博客网 时间:2024/05/20 05:58
要给一个DrawNode设置GLProgram,并且在shader中读取纹理信息,如下:
uniform sampler2D uTexture;
void main(){
gl_FragColor = texture2D(uTexture, v_texCoord);
}
在程序运行后发现中发现gl_FragColor 不正确,原因在于DrawNode绘制图形时写入的纹理坐标均为0.
因此,需要重写DrawNode的draw** 函数。
如drawSolidRect为例,代码如下
class VRMaskDrawNode : public DrawNode
{
Vec2 verts[] = {
origin,
Vec2(destination.x, origin.y),
destination,
Vec2(origin.x, destination.y)
};
int numberOfPoints = 4;
auto triangle_count = numberOfPoints - 2;
auto vertex_count = 3 * triangle_count;
ensureCapacity(vertex_count);
V2F_C4B_T2F_Triangle *triangles = (V2F_C4B_T2F_Triangle *)(_buffer + _bufferCount);
V2F_C4B_T2F_Triangle *cursor = triangles;
V2F_C4B_T2F_Triangle tmp1 = {
{ verts[0], Color4B(color), Tex2F(0.0f, 0.0f) },
{ verts[1], Color4B(color), Tex2F(1.0f, 0.0f) },
{ verts[2], Color4B(color), Tex2F(1.0f, 1.0f) },
};
V2F_C4B_T2F_Triangle tmp2 = {
{ verts[0], Color4B(color), Tex2F(0.0f, 0.0f) },
{ verts[2], Color4B(color),Tex2F(1.0f, 1.0f) },
{ verts[3], Color4B(color), Tex2F(0.0f, 1.0f) },
};
*cursor++ = tmp1;
*cursor++ = tmp2;
_bufferCount += vertex_count;
_dirty = true;
}
0 0
- cocos2dx给DrawNode的shader传递Texture2D
- cocos2dx-js cc.DrawNode
- cocos2dx DrawNode.drawSegment绘制出来的线粗细不一
- quick传递参数给shader
- cocos2dx Shader的使用
- cocos2dx源码分析:Texture2d创建
- OpenGL给Shader变量传递参数
- Unity Shaders and Effects Cookbook (2-6) 在 C# 代码中创建 Texture2D 并赋值给 Shader
- cocos2dx用DrawNode代替DrawPrimitives 画粗线、画不会被精灵挡住的图形
- cocos2dx-3.2(34) DrawNode 绘图API
- cocos2dx DrawNode和ClippingRectangleNode 使用详解
- DrawNode
- cocos2dx shader
- GLSL的texture2D函数
- Texture2D 图片的处理
- cocos2dx中shader的CC_Time的使用
- cocos2dx中shader的CC_Random01的使用
- cocos2dx shader实现深入浅出的背景
- 浅谈百度外卖筛选悬浮框效果的实现
- 解决中文乱码问题
- Spark GraphX原理介绍
- 俄罗斯方块C++源码
- pthread_detach()函数
- cocos2dx给DrawNode的shader传递Texture2D
- C++STL中的标准模板——优先队列
- 03-linux指令学习记录
- tsinsen A1329. 特技飞行
- SDWebImage框架的介绍及使用
- 第一个只出现一次的字符位置
- win下局域网内下载文件
- 大型网站架构系列:负载均衡详解(2)
- 井字棋C源码