2017-05-15 7 views
1

私は、画面座標を使って点、線、矩形を描画できるOpenGLライブラリを作成しています。しかし、私はどのように画面座標をクリップまたはカメラの座標に変換するのか分からない。私は最新のOpenGL(頂点配列と頂点バッファ、シェーダ)を使用しています。線や四角形を描画するための画面座標を使用してOpenGLプリミティブ(GL_POINT、GL_LINEなど)を描画する方法は?

DrawPoint(10, 10, 5); // draws a point at pixel 10, 10 with a radius of 5 

同じ概念:

これは私がの方に働いているものを基本的にあります。

また、私はそれが私が探しているものではないので、私はコードを提供していない、私は概念と数学を探しています。

答えて

2

あなたが望むのは、直交投影行列です。このコードは、あなたのドロー・ループになります:あなたが位置に描画するために何かを指定する場合、次に

#version 330 

layout(location = 0) in vec2 position; 

uniform mat4 mvp; 

void main() { 
    gl_Position = mvp * vec4(position, 0, 1); 
} 

<10, 10>

int width = getFramebufferWidth(); 
int height = getFramebufferHeight(); 
glm::mat4 mvp = glm::ortho(0, width, 0, height); 

glUniformMatrix4fv(glGetUniformLocation(program, "mvp"), 1, false, glm::value_ptr(mvp)); 

glViewport(0, width, 0, height); 
//Draw the Objects, clear the screen, whatever it is you need to do. 

次に、あなたのバーテックスシェーダで、あなたはこのような何かを持っていますそれは正確にその位置に描画されます。

このコードでは、問題のマトリックスを構築するのにGLMを使用しています。

+0

ありがとうございます、それはうまくいくようです。 –

関連する問題