2011-12-17 14 views
0

gluLookAt()で助けが必要です。私はglOrtho()(私は正しいと思う)私の呼び出しの後にy軸上のわずかに高いビューからz軸を下にビューを作成しようとして、それを使用しようとしています。 gluLookAt()の理解から、最初の3つのパラメータは、ビューがどこにあるか、「目」と次の3つは視線の最後の3つを見ている場所ですか?gluLookat()を使用したOpenGL

私はさまざまな設定を試していますが、画面に何も表示されず、空白の黒い画面が表示されることがあります。 私は、Webを使って実際の使用例を検索しましたが、機能の説明以外は何も見つかりませんでした(私は理解していますが、動作することはできません)。

私が試したコードはまだ投稿していません。試したメソッドが多すぎるため、コードの完全な混乱が残っています。 anyones目を流したい。

私の質問で、誰もが)gluLookAtを(使用する小さなプログラムの一例を投稿したり、より良い記述することができる。ここ

の作品、私は(それが唯一のテストのためです)、現在持っている神ひどいコードです:

#include <SDL/SDL.h> 
#include <SDL/SDL_opengl.h> 
#include <GL/glu.h> 
#include <windows.h> 

void init_ortho(int width, int height) 

{ 

SDL_Init(SDL_INIT_EVERYTHING); 
SDL_SetVideoMode(width,height,32,SDL_OPENGL); 
SDL_WM_SetCaption("OpenGL Test", NULL); 

glClearColor(0, 0, 0, 0); 
glViewport(0, 0, 640, 480); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrtho(0, width , height , 0, 0, 20); 
glMatrixMode(GL_MODELVIEW); 
gluLookAt(0,0,0, 300,300, 5, 0,1,0); 
glLoadIdentity(); 
glClear(GL_COLOR_BUFFER_BIT); 

} 

int Check(int keystroke, int x) 

{ 

if (keystroke == 65) 
x += 10; 

return x; 

} 

int main(int argc, char **argv) 
{ 
init_ortho(640, 480); 

glLoadIdentity(); 

int x = 300; 
bool quit = false; 

while (quit == false) 

{ 

for (int i = 0; i < 300; i++) 
{ 



if (GetAsyncKeyState(i) == -32767) 
{ 

    x = Check(i, x); 
if (x > 400) 
quit = true; 
    glTranslatef(x,300,10); 
glColor4f(1.0,1.0,1.0,1.0); 

glBegin(GL_QUADS); 
glVertex3f(0, 0,0); 
glVertex3f(100, 0,0); 
glVertex3f(100,100,0); 
glVertex3f(0, 100,0); 
glEnd(); 

glLoadIdentity(); 

SDL_GL_SwapBuffers(); 

glClear(GL_COLOR_BUFFER_BIT); 

} 
} 

} 



SDL_Quit(); 

return 0; 
} 
+0

コードを投稿すると役立ちます。 – datenwolf

+0

私はいくつかの神のひどいコードを含むように投稿を編集しました –

答えて

0

最後の3つは画角ですか?

間違っています。最後のパラメータは、カメラが「直立」の方向を定義します。あなたがそれの上に棒を置くカメラを想像してみてください。それの上にその棒が上のベクトルです。


このことをお伝えして申し訳ありませんが、このすべてをやっている方法はひどく間違っています。

まず、プロッパーイベント処理ループはありません。どこかでSDL_WaitEventまたはSDL_PollEventに電話する必要があります。また、一部のアニメーションでは、プログラムメインループ内にfor 0...300ループを持つことは絶対に意味がありません。

次に、gluLookAtはレンダリングされた三角形を一見して表示するビュー変換を作成します。

コードを修正する方法はありません。私は最初から始めて、適切なチュートリアルを取る。

+0

私はこのコードがほとんどゴミであることを知っています、私の唯一の懸念はgluLookAt()がブランクスクリーン以外のものを実際に見るようになっていることです。私はどのようにわからない –

+0

答えをありがとう、私はgluLookAt()を得ることができる方法はありませんこのコードのすべてで動作する? –

+0

@Michael:gluLookAtは、あなたの問題の中では最小です。コードを完全に再構築する必要があります。そうしないと、何かを正しく表示させることが難しくなります。 – datenwolf

関連する問題