2010-12-30 15 views
3

Windows 7にSDL 1.2.14 をダウンロードしました。 と私はMobility Radeon X1800ドライバをインストールしました。SDLとOpenGLのバージョンと実装方法

私は、Microsoft Visual C++ 2010のExpressを使用しています。

私は、次の追加の依存関係を追加SDLは、「VC++ディレクトリ」に含めるとライブラリディレクトリ

を追加しました: opengl32.libを。 glu32.lib; SDL.lib; SDLmain.lib;

私はどんなOpenGLのディレクトリを追加しませんでした私のプログラムフォルダ

にSDL.dllを追加しました!

#include "SDL.h" 
#include "SDL_opengl.h" 

bool running = true; 

int main(int argc, char* args[]) { 
    SDL_Init(SDL_INIT_EVERYTHING); 
    SDL_Surface* screen = SDL_SetVideoMode(640,480,32,SDL_OPENGL); 

    glViewport(0,0,640,480); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(45.0, 640/480, 1.0, 200.0); 

    while(running) { 
    glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT); 

    glMatrixMode(GL_MODELVIEW); // Swich to the drawing perspective 
    glLoadIdentity(); 
    glTranslatef(0.0,0.0,-5.0); 

    glBegin(GL_TRIANGLES); 
     glVertex3f(-0.5f, 0.5f, 0.0f); 
     glVertex3f(-1.0f, 1.5f, 0.0f); 
     glVertex3f(-1.5f, 0.5f, 0.0f); 
    glEnd(); 

    SDL_GL_SwapBuffers(); 
    } 

    SDL_Quit(); 
    return 0; 
} 

このプログラムは、単純な三角形を描きます。 私は上記の2つのヘッダファイルを含み、私のOpenGLコードはちょうど動作します!

私の三角形がGPUやCPU上で実行されるかどうかは知りません。そして私が使っているOpenGLのバージョンは?

私は、私は、Microsoftが、もはやそこopenglのファイルを更新しないことを聞いて、彼らは、OpenGL 1.1か何かのCPUの実装を使用することを意味します。

どのように私は私が使用しているのOpenGLのバージョンを知っていますか?実行時にチェックすることはできますか?私はCPUやGPUの実装を使用している場合

は、どのように私は知っていますか?実行時にチェックすることはできますか?私の問題を見てのため

感謝。

答えて

1

実際にビデオカードドライバをインストールすると、マシンに存在するOpenGLが "置き換えられ"、そのバージョンが使用されます。

複数のバージョンのOpenGLが同時に存在し、どちらが使用されるかはOpenGLの初期化に使用されるHDCによって異なります。たとえば、ローカルログインセッションで実行されているアプリケーションはハードウェアアクセラレーションされたGLを取得し、リモートデスクトップセッションで実行するアプリケーションはCPUベースの実装を取得します(Ben Voigt)

Visual Studioにのみ付属する現在のヘッダーとライブラリには、それにOpenGL 1.1が含まれているので、最新のものにアクセスするには、新しい関数へのポインタを得るためにwglGetProcAddressを呼び出す必要があります。ここで

あなたはより多くの情報を見つけることができます。http://www.opengl.org/wiki/Getting_started

+1

良い点、しかし、あなたは本当に正確ではない「置き換え」ことに注意する必要があります。同時に複数のバージョンのOpenGLが存在し、どちらが使用されるかはOpenGLの初期化に使用される「HDC」に依存します。たとえば、ローカルログインセッションで実行されているアプリケーションは、ハードウェアアクセラレーションされたGLを取得できますが、リモートデスクトップセッションで実行しているアプリケーションはCPUベースの実装になります。 –

+0

ありがとうございます、あなたの情報でそれを更新しました。 – bcsanches

関連する問題