在OpenGL中翻转精灵...带有x原点......(C ++)

时间:2015-07-29 23:39:01

标签: c++ opengl math

我已经设法能够在OpenGL中翻转精灵:

// ox is origin x, w is width, flip is whether the sprite should flipped

if (flip) {
    x += (w+ox);
}

x += ox;
y += oy;

glBegin(GL_QUADS);

//bottom right
glTexCoord2f(0, 0); glVertex2f(x, y);
//top right
glTexCoord2f(1, 0); glVertex2f(flip ? x - w : x + w, y);
//top left
glTexCoord2f(1, 1); glVertex2f(flip ? x - w : x + w, y + h);
//bottom left
glTexCoord2f(0, 1); glVertex2f(x, y + h);

glEnd();

glDisable(GL_TEXTURE_2D);

有效,但根据它们的来源翻转精灵有问题。精灵在正x方向(不翻转)时面貌显示正常。但是一旦我翻转它,所有的精灵位置(我使用精灵的动画)都不会像没有翻转那样对齐。我试图做的就是字面意思,只需将原点翻转就恰到好处。如果你没理解我的意思......

https://www.youtube.com/watch?v=OY8rZEyjR4s(行动中的问题视频)

此时我已经尝试过这么多随机数学,我不知道下一步该尝试什么,当然我尝试了基本的东西,比如x += flip ? -ox : ox;,我搞砸了x += (w+ox);行太

我添加这个是因为有人在评论中提出这个问题,这就是我的意思:

例如,我会在精灵上执行setOrigin(-1,2),它会在x轴上移动-1像素(如果没有翻转,则移动1个像素),在y轴上移动2个像素(向下移动2个像素)< / p>

0 个答案:

没有答案