想象以下场景:您有一组 PNG 格式的 RPG 角色精灵表,并且您想在 OpenGL 应用程序中使用它们。
单独的字符(通常)大小为 16 x 24 像素(即 24 像素高),并且可以是任何宽度和高度而不会留下填充。有点像这样:
(来源:kafuka.org)
在给定帧索引和大小的情况下,我已经有了确定基于整数的剪切矩形的代码:
int framesPerRow = sheet.Width / cellWidth;
int framesPerColumn = sheet.Height / cellHeight;
framesTotal = framesPerRow * framesPerColumn;
int left = frameIndex % framesPerRow;
int top = frameIndex / framesPerRow;
//Clipping rect's width and height are obviously cellWidth and cellHeight.
运行此代码frameIndex = 11, cellWidth = 16, cellHeight = 24
将返回一个剪贴画(32, 24)-(48, 48)
,假设它是右/下而不是宽度/高度。
实际问题
现在,给定一个剪切矩形和一个 X/Y 坐标来放置精灵,我如何在 OpenGL 中绘制它?左上角的零坐标是首选。