OpenGLを備えたSDL2 —奇妙な結果、何が問題なのですか?


8

アプリをiOSに移植しているため、SDL1.2からSDL2にアップグレードする必要があります(これまでのところ、OS Xデスクトップアプリとしてのみテストしています)。ただし、SDL2でコードを実行すると、下の2番目の画像に示すように、奇妙な結果が得られます(最初の画像は、SDLを使用した場合の外観です)。これを引き起こす単一のチェンジセットはこれです、そこに明らかに問題があると思いますか、それともSDL2には知らないOpenGLのニュアンスがありますか?私のSDLはHGの最新のものに基づいています。

更新: 同じプロジェクトのiOSポートに関する別の質問がここにあります

更新2:これもSDLニュースグループにあります:http : //thread.gmane.org/gmane.comp.lib.sdl/58026

更新3:ポータブルOpenGLにRegalを使用してみましたが、3番目のスクリーンショットはそれほど良くない結果です。

#include <OpenGL/gl.h>
#include <OpenGL/glu.h>

#include "GL/Regal.h"
#include "GL/RegalGLU.h"

SDL 1.2の使用 SDL 2の使用 SDL 2でのRegalの使用


1
(何らかの理由で)スプライト/パーティクルが単に〜90°回転するか、非常に薄い長方形に引き伸ばされる可能性はありますか?ワイヤーフレームビューでは、これをすばやく確認できます。

2
リンクしたチェンジセットによると、OpenGL ESではサポートされていないglCallLists()を使用してレンダリングしています(これはiOSで使用するものです)。(正直に言うと、iOSでコンパイルエラーが発生しないことにちょっと驚いています。)
Trevor Powell

スクリーンショットはOS Xからのもので、その後iOSへの移植が行われました(glCallListsはLinux固有のテキストレンダリングにのみ使用されたため、OS Xでも使用していませんでした)
Gabor

回答:


7

ここにあなたの問題の通知があります。私は表面をコメントアウトします= SDL_Get ...それはいくつかの奇妙な結果を与えていました。また、OpenGLコンテキストを作成するのを忘れていました。他に問題がある場合はお知らせください。

SDLWindow::SDLWindow(int width, int height, double axisLen, const std::string &caption)
:m_fov(axisLen)
,m_width(0)
,m_height(0)
,m_fps(0)
,m_idxSnapshot(0)
,m_camPos(0, 0, 2)
,m_camLookAt(0, 0, 0)
,m_camOrient(0, 1, 0)
,surface(NULL)
,m_texStar(0)
,m_bRunning(true)
{
SDL_GLContext ctx;

if (SDL_Init(SDL_INIT_VIDEO) < 0)
    throw std::runtime_error(SDL_GetError());
atexit(SDL_Quit);

SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 0 );
SDL_GL_SetAttribute( SDL_GL_RETAINED_BACKING, 1 ); 

 if ((window = SDL_CreateWindow(caption.c_str(), SDL_WINDOWPOS_CENTERED,
 SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | 
 SDL_WINDOW_BORDERLESS)) == NULL)
    throw std::runtime_error(SDL_GetError());     

/*if ((surface = SDL_GetWindowSurface(window)) == NULL)
    throw std::runtime_error(SDL_GetError());*/

m_width = width;
m_height = height;

ctx = SDL_GL_CreateContext(window);

InitGL();
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.