sprite自绘纹理ondraw,坐标出问题?

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里,把多张纹理绑定进去

在不?您解决这个问题了吗?不能设置坐标的问题。我可以请教您一下不?谢谢了,怎样解决的呢?