我目前正在玩一个jave游戏引擎。 (由朋友使用LWJGL开发)。此引擎使用Vector3f位置在屏幕上绘制图片。我想用精确的像素位置绘制图片...所以我创建了一个Vector3f,并且不知何故,现在必须将x和y值转换为像素位置。但是如何?
答案 0 :(得分:0)
假设Vector3f的组件使用OpenGL屏幕坐标(原点位于屏幕中心,x向右,y向上,轴的值为-1到1)。生成的像素坐标使用LWJGL坐标系,即原点位于左下角。
import org.lwjgl.opengl.Display;
import org.lwjgl.util.Point;
import org.lwjgl.util.vector.Vector3f;
public static Point toPixelPos(Vector3f v) {
int width = Display.getWidth();
int height = Display.getHeight();
int x = (int) (width * (v.x + 1) / 2);
int y = (int) (height * (v.y + 1) / 2);
return new Point(x, y);
}