[過去ログ] SDLスレ (987レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
794: 名前は開発中のものです。 [sage] 2005/05/11(水) 17:06:15 ID:ChV6SFiM(1) AAS
SDL_ttf は埋め込みビットマップフォントのある TrueTypeFont を読むと、
埋め込みビットマップの存在するサイズを指定するだけで
アウトラインフォントを無視して強制的に埋め込みビットマップフォントの方を使うんだよ。
でもそのための処理は入ってない。だから化けてる。
>>793
793(1): 名前は開発中のものです。 [sage] 2005/05/11(水) 01:00:39 ID:irIlrbEI(1) AAS
msgothicでもTT_CONFIG_OPTION_EMBEDDED_BITMAPSをundefしてfreetype再コンパイルすれば22pt以下も表示できた気が
は SDL_ttf が内部で使ってる freetype の埋め込みビットマップ処理そのものを潰して対処してる。
なんだかなー。俺も他のライブラリ使った方がいいと思う。
795: 781 [sage] 2005/05/12(木) 15:13:44 ID:gBvQuFFy(1) AAS
皆様アドバイスありがとうございます。

mbstowcs()を使ってUNICODEに変換してTTL_RenderUNICODE_Blended()
を使うことで無事日本語を表示することが出来ました。
取りあえず22pt以下の場合はTTL_RenderUNICODE_Solid()を使って表示
することにしています。他にもライブラリがあるようなのでぼちぼち
調べてみようかと思います。どうもありがとうございました。
796: 名前は開発中のものです。 [] 2005/06/25(土) 16:10:39 ID:kpes39YP(1) AAS
軽めのGUIライブラリーってどれ?
多くてわかんない
797
(1): 名前は開発中のものです。 [sage] 2005/06/26(日) 17:35:22 ID:zg82OFD2(1) AAS
今日(1時間前)からSDLを使い始めたものですが、
>>771
771(1): 名前は開発中のものです。 [sage] 05/03/13 22:40:23 ID:idmmnJMg(1) AAS
>>768
コード生成のランタイムライブラリがマルチスレッドデバッグDLLになってなかったらコロヌ
ライブラリへのパスが通ってなかったらなおコロヌ
の発言のおかげで外部リンク:tokyo.cool.ne.jpの一番雛形が通りました。
Thx!!
798: 名前は開発中のものです。 [sage] 2005/06/26(日) 23:25:16 ID:Expiz02r(1) AAS
>>797
久しぶりにそこのぞいたけど、新しい記事とか解説はなかったな
カウンタが1000越えてるな
たしか>>633
633(1): 名前は開発中のものです。 [sage] 04/11/20 16:11:50 ID:PDaYb1sL(1) AAS
77人目だったよw
が77ゲッツしてたんだよな、懐かしい
799
(3): 名前は開発中のものです。 [sage] 2005/06/27(月) 08:01:33 ID:3Ab5ewvX(1/2) AAS
質問です。
2つあるんですが、
1個目、SDLの標準機能で2枚目のウインドウを作ることってできるんでしょうか?
2個目、SDLの標準機能でC言語標準のscanfやらfgets(from stdin)やらのように、ユーザーに要求を求めるようなことって可能でしょうか?

2個目は1個目ができればハードコードで作ることも可能そうですが、ちょっと面倒な気がします。
よろしくお願いします。
800: 名前は開発中のものです。 [] 2005/06/27(月) 08:02:17 ID:3Ab5ewvX(2/2) AAS
AGE!!
801: 名前は開発中のものです。 [sage] 2005/06/27(月) 23:12:40 ID:YfSmd5eY(1) AAS
>>749
749(4): 名前は開発中のものです。 [sage] 05/02/15 20:48:20 ID:6CIQh+IC(1) AAS
前から BCC で使ってるけど、1.2.7 からコンパイルできなくなったと記憶してる。
DirectX と WinDIB の両方でエラーになるから、片方潰して回避することもできない。
結構粘ってみたんだけど、問題解決できなかった。
単に一つ定義が足りないっつってるだけかと思ったら、
手動で定義しても次々別のエラーが出てくるだけ。終わらない。
他に根本的な原因があるんだろうけど、解明できなかった。

ちなみに VC も DirectX のソースでエラー吐く。
こっちも問題を解決できなかったので、
プロジェクトの設定 -> 左の'SDL'を選択 -> C/C++ -> プリプロセッサ -> 定義から ENABLE_DIRECTX を消す
とやって、これでもまだ足りないから、
ファイルビューから名前に dx5 を含むファイルを全部削除した。
これで DirectX 無しでだがコンパイルできるようになる。
ちなみに、初期状態だと afxres.h が無いとか言い出すけど、
#include <windows.h>
とだけ書いた afxres.h を SDL-1.2.8\VisualC\SDL に置けば回避できる。
まさかちゃんとした afxres.h を持ってこないと
DirectX 付きでコンパイルできないってんじゃないだろうな……。

1.2.7 の時の話だから、今はまた少し事情が違うかもしれないけど、
手元で確認した限りだと 1.2.8 も BCC VC 共にそのままではコンパイル不可。
もう Cygwin でしかテストしてないのかね。
GetAncestor(SDL_Window, GA_ROOT);
がとおらないのは
WINVER=0x0500とでも
C/C++ -> プリプロセッサ -> 定義
に入れると解決。

という遅レス

あとafxres.hなんてMFC入れればあるんじゃね?
802
(1): 799 [sage] 2005/06/28(火) 01:25:30 ID:xvJWzK7X(1/3) AAS
一日で一レスか。
こりゃ参ったなー。
作りたいものへのモチベーションも下がってきたし、一端とりさげるかな。
803: 802 [sage] 2005/06/28(火) 01:55:33 ID:xvJWzK7X(2/3) AAS
再度検索してみたら、2000年の時点の話だが、対応してないというページを見つけた。
外部リンク:risky-safety.org
804
(2): 名前は開発中のものです。 [sage] 2005/06/28(火) 02:06:28 ID:pKbCq+nM(1) AAS
>>799
1個目:
FAQだと思うが、改めてソースを見たところ、SDL_VideoInit()がcurrent_videoと言う
グローバル変数にビデオデバイス情報を格納していて、それを切り換えるAPIもない。
ロックせずに使用してるので、スレッド化も無理。
そもそもウィンドウという概念はない。

2個目:
コンソールを使いたいのか?だとすると開発環境によるだろうな。
俺は、MinGWを使ってるがこれだと無理っぽい。cygwinなら出来るだろうが、
cygwin上でSDLを動かしたことないんでよーわからん。
805
(2): 名前は開発中のものです。 [sage] 2005/06/28(火) 02:21:39 ID:dyIcBP9c(1/2) AAS
>>799
どこかで既出だろう+試せば判るだろと思って黙ってたんだが。

ひとつめ、二つ以上のウィンドウは出せんとwebのどこかで読んだな。
ソースを見てもグローバル変数(Windows なら HWND SDL_Window)を
使ってそこらじゅうで使いまわしてるから、まず無理だろうと思う。

ふたつめ、起動した時にDOS窓(これも Windows の話だが)が出ているならできる。というかできた。
Windows の場合、設定によってはstdoutをstdout.txtにリダイレクトして、
DOS窓を出さないこともできるが、その場合はできなかった。
ソースは見てないが多分無理だろうな。
806
(1): 805 [sage] 2005/06/28(火) 02:30:05 ID:dyIcBP9c(2/2) AAS
と書いてる端から被ったか……。全く食いつきがいいよな俺ら。

>>804と俺で書いてることが微妙に違うが、
ひとつめの違いは>>804が機種独立の部分を見て、
俺が機種依存の部分を見て喋ってるせい。
ふたつめは環境の違いで、俺の環境(VC6)ではどちらも作れる。
MinGWとCygwinはどちらかができるんなら
両方できるんじゃないかと思うがどちらも知らんからわからんなあ。

と、聞かれてもいないが補足しとく。
807: 名前は開発中のものです。 [sage] 2005/06/28(火) 04:03:09 ID:xvJWzK7X(3/3) AAS
>>804-806
レスthx

1個目について、
なるほど、グローバル変数つかってるのか。
そりゃ、切り分けが大変そうだ。
明快な回答に感謝。

2個目に付いて、
えーっと、誤解を招いたようだけど、
要はscanfとか自体を使うのではなく、自前か何かで実装できないかって、話です。
それが、SDL標準であったら良かったんですけど、なさげですね。
2枚目のウインドウがでるなら、そっちのサーフェスとキー入力を捻って入力コンソールを作ることができたんでしょうけど・・・。

あと、
作りたいソフトを超えるソフトを見つけてしまったので一端引くことにしました。
それが、ちょうどイメージしてた物に近かったため、それでいいかなと思っています。
回答ありがとうございました。
808
(9): 名前は開発中のものです。 [] 2005/07/05(火) 04:30:00 ID:zWniNiIr(1/10) AAS
640*480*32(bpp)の画像を1枚表示するだけで60FPS前後なんですが描画が遅いのは何が原因なんでしょう?
それともこれが限界ですか?

初期化は
SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_ANYFORMAT);
こんな感じでSDL_FillRect()せずにSDL_BlitSurface()してからSDL_Flip()。

環境は
Pentium4 2.4G
GeForce4 ti4400
809: 808 [sage] 2005/07/05(火) 04:38:10 ID:zWniNiIr(2/10) AAS
補足です。
ウィンドウモードでリフレッシュレートは85Hzです。
画像を描画させなければ130FPSほどでますがFlipだけで130FPSってのはちょっと遅いですよね?
810: 名前は開発中のものです。 [sage] 2005/07/05(火) 11:23:53 ID:Arb1ZSmv(1) AAS
SDLってイイとか言われているけど
実は描画が遅いんだよね
811
(5): 名前は開発中のものです。 [sage] 2005/07/05(火) 14:08:42 ID:1ZePfTMa(1/3) AAS
>>808
せめて実行可能なコードを出せよ…

SDL_Flipだけで130FPSってのは遅すぎるのでどこかが間違っていると思われ

とりあえず SDL_SetVideoMode()の戻り値のSDL_SurfaceとBlitしている画像
のSDL_Surfaceのflagsやformatをチェックして期待通りかどうかチェックしれ
812: 811 [sage] 2005/07/05(火) 14:24:14 ID:1ZePfTMa(2/3) AAS
あとバカみたいだと思うだろうけどFPSの計算の仕方とかもチェック
813
(2): 808 [sage] 2005/07/05(火) 14:53:21 ID:zWniNiIr(3/10) AAS
>>811
>せめて実行可能なコードを出せよ…
あいすまんかった。

int main(int argc, char* argv[]) {
 SDL_Init(SDL_INIT_VIDEO);
 SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_ANYFORMAT);
 SDL_Surface* temp = SDL_LoadBMP("test.bmp");
 SDL_Surface* surface = SDL_ConvertSurface(temp, screen->format, SDL_HWSURFACE);

 while (1) {
  SDL_BlitSurface(surface, NULL, screen, NULL);
  SDL_Flip(screen);

  SDL_Event event;
  while (SDL_PollEvent(&event))
   if (event.type == SDL_QUIT)
    return 0;

  char buf[64];
  sprintf(buf, "%d fps", CalcFPS());
  SDL_WM_SetCaption(buf, NULL);
 }
 return 0;
}
814: 808 [sage] 2005/07/05(火) 14:53:54 ID:zWniNiIr(4/10) AAS
>>813 の続き

int CalcFPS() {
 static Uint32 count, fps;
 static Uint32 btime;

 if (++count == 60) {
  Uint32 time = SDL_GetTicks();
  fps = 1000 / (float(time - btime) / 60);
  btime = time;
  count = 0;
 }
 return fps;
}
815: 808 [sage] 2005/07/05(火) 14:57:52 ID:zWniNiIr(5/10) AAS
普通にDirectX(draw)でハードウェアサーフェイス作ると500FPSとか軽くでるので
ハードウェアやドライバがおかしいとも思えないし何ででしょうね。
皆さん上のコードでFPSいくつ位でます?
816: 808 [sage] 2005/07/05(火) 15:07:12 ID:zWniNiIr(6/10) AAS
>>811
>のSDL_Surfaceのflagsやformatをチェックして期待通りかどうかチェックしれ
SDL_Surface.format_versionってのがscreenでは2、surfaceでは4になっている以外は同じです。
これが原因ですかね…?
んー。
817: 811 [sage] 2005/07/05(火) 18:34:24 ID:1ZePfTMa(3/3) AAS
>>808
実行してみた.SDL_Flip()のみにして300fpsくらい出た…

CPU : PentiumM 1.1GHz
Video : i855GM (VRAM は Main Memory) の 16bpp

とりあえず毎フレームSDL_WM_SetCaption()するのは無駄なんで
CalcFPS()内のifの中に持って言ったら 400FPSくらいになった…
818
(1): 名前は開発中のものです。 [sage] 2005/07/05(火) 19:49:15 ID:f1qgE5RI(1) AAS
試しました。確かに

WindowsXP
Pentium 4 2.4GHz
GeForce4 MX 420

ではSDL_Flip()だけで130FPSぐらいになります。
1-
あと 169 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s