SDL2_ttfを使用したフォントの読み込みで失敗
最終的にSDL2_ttfを使用してOpenGLのテクスチャとして読み込ませたいと考えてます。
まずSDL2_ttf単体でフォントの読み込みのテストを行いました。
下記のコードは正常に実行できますが、毎回フォントデータを読み込みに行ってしまうため速度が出ません。
#include <SDL.h>
#include <SDL_ttf.h>
#include <iostream>
using namespace std;
int main( int argc, char* argv[] ){
SDL_Init( SDL_INIT_EVERYTHING );
TTF_Init();
while( true ){
SDL_RWops *rwops = SDL_RWFromFile( "font.ttf", "rb" );
TTF_Font *font = TTF_OpenFontRW( rwops, 0, 14 );
SDL_Surface *texture = TTF_RenderUTF8_Blended( font, "test", [](){
SDL_Color c= { 255,255,255,255 };
return c;
}());
cout << TTF_GetError() << endl;
TTF_CloseFont( font );
SDL_RWclose( rwops );
SDL_Delay( 100 );
}
TTF_Quit();
SDL_Quit();
return 0;
}
そこでrwopsに読み込む処理をループの外に置いたところ、TTF_RenderUTF8_Blendedでブレークし、以下のエラーが出力されました。
0x71002A85 (SDL2_ttf.dll) で例外がスローされました (SDL_Test.exe 内): 0xC0000005:
場所 0x00000000 の読み取り中にアクセス違反が発生しました
TTF_GetError()からは"Couldn't load font file"と出力されました。
#include <SDL.h>
#include <SDL_ttf.h>
#include <iostream>
using namespace std;
int main( int argc, char* argv[] ){
SDL_Init( SDL_INIT_EVERYTHING );
TTF_Init();
SDL_RWops *rwops = SDL_RWFromFile( "font.ttf", "rb" );
while( true ){
TTF_Font *font = TTF_OpenFontRW( rwops, 0, 14 );
cout << TTF_GetError() << endl;
SDL_Surface *texture = TTF_RenderUTF8_Blended( font, "test", [](){
SDL_Color c= { 255,255,255,255 };
return c;
}());
TTF_CloseFont( font );
SDL_Delay( 100 );
}
SDL_RWclose( rwops );
TTF_Quit();
SDL_Quit();
return 0;
}
おそらくどこかでrwopsがクリアされたと考えていますが何処だかわからず・・・
分かる方いたらご教授お願いします。
開発環境はVisualStudio2015です。
フォントデータは読み込めるディレクトリに配置しています。
SDL2リファレンス
http://sdl2referencejp.osdn.jp/index.html