sprite自绘ondraw,结果精灵图坐标总是在(0,0)原点,我应该怎么改呢,让精灵图setpostion起作用
补充下ondraw代码
void MultipleTexturesShaderSprite::onDraw(const Mat4 &transform, uint32_t flags)
{
// 获取GL程序
auto glProgram = getGLProgram();
glProgram->use();
// 设置变换矩阵,旋转平移等
glProgram->setUniformsForBuiltins(transform);
// 开启顶点属性
ccGLEnableVertexAttribs(kCCVertexAttribFlag_PosColorTex);
ccBlendFunc blend = getBlendFunc();
ccGLBlendFunc(blend.src, blend.dst);
ccGLBindTexture2D(getTexture()->getName());
//
// Attributes
//
#define kQuadSize sizeof(_quad.bl)
long offset = (long)&_quad;
float w = SIZE_X, h = SIZE_Y;
GLfloat vertices[12] = { 0,0, w,0, w,h, 0,0, 0,h, w,h };
// vertex
int diff = offsetof(ccV3F_C4B_T2F, vertices);
glVertexAttribPointer(kCCVertexAttrib_Position, 3, GL_FLOAT, GL_FALSE, kQuadSize, (void*)(offset + diff));
// texCoods
diff = offsetof(ccV3F_C4B_T2F, texCoords);
glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, kQuadSize, (void*)(offset + diff));
// color
diff = offsetof(ccV3F_C4B_T2F, colors);
glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_UNSIGNED_BYTE, GL_TRUE, kQuadSize, (void*)(offset + diff));
_glProgramState->apply(transform);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
没人回,我自己顶上去
没人回,我自己顶上去
大佬,这是c++的吧,是不是矩阵有问题?另外,有在creator里面用ts重写过sprite的onDraw吗?最近在研究shader中使用多纹理这个东西,一直不知道怎么重写,刚好看到有的帖子,希望能找点思路。
在onDraw里,把多张纹理绑定进去
在不?您解决这个问题了吗?不能设置坐标的问题。我可以请教您一下不?谢谢了,怎样解决的呢?