0

如何在 OpenGL 的视口底部绘制一个水平框?这是在顶部绘制它。怎么了?

var H = window height;
var len = 20;

gl.Vertex3d(0, H - len, 0);       //top     left
gl.Vertex3d(Width, H - len, 0);   //top     right
gl.Vertex3d(Width, H + len, 0);   //bottom  left
gl.Vertex3d(0, H + len, 0);       //bottom  right
4

1 回答 1

2

OpenGL 的默认坐标空间的 Y 指向上方。你可以改变它,或者你可以改变你的顶点,这取决于你要做什么和你习惯了什么。在您发布的情况下,它只是一个四边形,您可能只需更改顶点并执行以下操作:

gl.Vertex3d(0, len, 0);       //top     left
gl.Vertex3d(Width, len, 0);   //top     right
gl.Vertex3d(Width, -len, 0);   //bottom  left
gl.Vertex3d(0, -len, 0);       //bottom  right

如果您正在绘制很多其他东西,您可以在绘制之前根据需要设置当前变换矩阵(并可能在之后恢复它),方法是执行以下操作:

gl.matrixMode(GL_PROJECTION);
gl.ortho(left, right, top, bottom, near, far); // Note reversal of top and bottom
于 2013-03-20T04:10:20.497 回答