クロスプラットフォームハードウェアアクセラレーション2dC++アプリ?
SDL+OpenGL。シェーダーやエクステンションを使用している場合は、グリーまたはグリーも発生する可能性があります。Gleeは使いやすいですが、3.0以降のOpenGLバージョンをサポートしていないようです。また、画像をロードするためにSDL_imageが必要になる場合があります。
OpenGLがあることは知っていますが、クロスプラットフォームでの使用方法に関するチュートリアルが見つからないようです。すべて1つのプラットフォームに焦点を当てています。
SDL_Init(SDL_INIT_VIDEO);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0);//disable vsync
if (SDL_SetVideoMode(scrWidth, scrHeight, 32, SDL_OPENGL) == 0){
fprintf(stderr, "couldn't set mode %dx%d!\n", 640, 480);
SDL_Quit();
return -1;
}
glewInit();//if you use glew, shaders, extensions.
while(gameIsRunning()){//game loop
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
//OpenGL rendering here
glFlush();
SDL_GL_SwapBuffers();
}
SDL_Quit();
詳細については、sdlのドキュメントを参照してください。
SDLを使用することも可能ですが、使用するとゲームのパフォーマンスが低下する可能性があります。これは必ずしも本当ですか?
vsyncを無効にすると、1秒あたり数百から数千のフレームを取得できます。正確なパフォーマンスは、ハードウェアとシーンの複雑さによって異なります。ディスプレイリスト/頂点バッファオブジェクトなしで「RAW」openglを使用した単純な3Dダンジョンクローラーの300fpsレポートがありました。また、固定フレームレートまたはタイマー駆動エンジンを使用する場合、要求したよりも多くのフレーム/秒を取得することはありません。
SDLは、Unreal2004をLinuxに移植するために使用されました。また、Doom 3 / Quake4Linuxポートでも使用されました。したがって、徹底的にテストされ、よく知られています。
詳細については、このリストを参照してください。