[過去ログ] SDLスレ (987レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
451: N速に書き込めません。 [N速に書き込めません。] 04/07/11 10:18 ID:wvsVVX1k(1) AAS
N速に書き込めません。
何とかしてください
452(1): 名無しさん@そうだ選挙に行こう [sage] 04/07/11 12:11 ID:/yFc1fy2(1) AAS
>>452
そんなときはあれだよ。 あれ。
453(6): 名前は開発中のものです。 [sage] 04/07/12 00:37 ID:A2nXW2No(1/4) AAS
SDL_Surfaceをクラス化してるんですが、例えば SDL_kanji の Kanji_PutText()
みたいに SDL_Surface* を引数に取る関数を呼ぶときに楽しようと思って、
class CSDLSurface {
...
operator SDL_Surface*() { return surface; } // surface は SDL_Surface*
などとクラス内に書いたんです。でも
Kanji_PutText( ... , screen, ... ); // screen は CSDLSurface
とやっても、VC.NETに
引数を 'CSDLSurface *' から 'SDL_Surface *' に変換できません
と怒られるし、(SDL_Surface*)screen とやってキャストして渡しても、クラスのアドレスが
そのまんま渡ってるみたいでうまくいきません。そもそもなんで operator をオーバーロード
してるのに型変換してくれないんでしゅか。
454: 453 [sage] 04/07/12 00:39 ID:A2nXW2No(2/4) AAS
s/しゅか/しょうか/; # ○| ̄|_
455(3): 名前は開発中のものです。 [sage] 04/07/12 01:05 ID:1R+yHQE6(1) AAS
>>453
> Kanji_PutText( ... , screen, ... ); // screen は CSDLSurface
Kanji_PutText( ... , screen(), ... );
じゃないかい?
456(1): 453 [sage] 04/07/12 01:29 ID:A2nXW2No(3/4) AAS
>>455
screen()とやると、"関数には評価されません" と言われてしまいます、、
それと453に間違いがもう一つ
> Kanji_PutText( ... , screen, ... ); // screen は CSDLSurface
screenは CSDLSurface* です
457(1): 名前は開発中のものです。 [sage] 04/07/12 09:21 ID:d4JCqMcp(1) AAS
>>456
> screenは CSDLSurface* です
じゃ、
Kanji_PutText( ... , (*screen)(), ... );
Kanji_PutText( ... , screen->operator(), ... );
のどっちかじゃない?
458: 453 [sage 長くなってごめんなさい。] 04/07/12 23:23 ID:A2nXW2No(4/4) AAS
>>457
どうもお手数かけてしまってすみませんでした。
Kanji_PutText(..., screen->operator SDL_Surface*(), ...);
でコンパイルは通ったんですが、よく考えてみるとどうやらscreenがポインタ
であることが原因だったようで、
CSDLSurface screen; // ポインタにするのをやめた
...
Kanji_PutText(..., screen, ...);
みたいに、普通にクラスを渡せばちゃんと SDL_Surface* に変換してくれるんですね。
これってC++の基本ですか? 恥ずかしいかも。
でもなんか、クラスをポインタでなく保持するのはよろしくない、みたいな文章をどこかで
読んだ気がして、それが引っかかってなんか気が進まないです、、
459: 名前は開発中のものです。 [sage] 04/07/13 00:35 ID:yFmAkR9z(1) AAS
gcc version 3.2 (mingw special 20020817-1)で実験してみた。
大体予想通りの結果?長文スマソ。
#include <iostream>
using namespace std;
class Foo {};
class Bar {
Foo foo;
public:
operator Foo*() {return &(this->foo);}
};
void hoge(Foo* p_foo_)
{
cout << p_foo_ << endl;
}
int main(int argc,char* argv[])
{
Bar bar;
Bar* p_bar = &bar;
hoge(bar);
// hoge(bar()); // no match for call to `(Bar) ()'
// hoge(p_bar); // cannot convert `Bar*' to `Foo*' for argument `1' to `void hoge(Foo*)'
hoge(*p_bar);
// hoge((*p_bar)()); // no match for call to `(Bar) ()'
// hoge(p_bar->operator()); // `class Bar' has no member named `operator()'
return 0;
}
460: 名前は開発中のものです。 [sage] 04/07/13 03:32 ID:P6ImUkzN(1) AAS
foo* operator() と operator foo*() は違う
461: 名前は開発中のものです。 [sage] 04/07/13 03:58 ID:szTJAEHM(1) AAS
>>453
ポインタなら単純に参照を外すだけでいい
Kanji_PutText( ... , *screen, ... );
ただ、暗黙のキャストは怖いから、
楽しようと考えている程度なら、素直にGetterを作った方が良いと思う。
462: 453 [sage] 04/07/13 23:44 ID:KSTvEm7j(1) AAS
ポインタの参照先を渡したらうまくキャストしてくれました。でも、仰るとおり
暗黙の型変換を故意に狙うのはよくないですね。それに、*screen で返って
くるのがポインタってのも直感的でないですし。結局
SDL_Surface* GetSurface() const { return surface; }
を加えました。
463(4): 名前は開発中のものです。 [sage] 04/07/21 22:14 ID:yROlyeHQ(1) AAS
概念の質問になって申し訳無いんだが
surfaceって、オブジェクト毎に作って良いんだろうか?
今まで俗に言うスプライトみたいな扱い方してたんだが。
背景なら背景で、画像合成させて1つのsurfaceにするのが普通なんだろうか?
464: 名前は開発中のものです。 [sage] 04/07/22 01:54 ID:OPZjuMp0(1) AAS
>>463
とりあえず質問の意味がさっぱりわからん…
465: 名前は開発中のものです。 [sage] 04/07/22 12:31 ID:sx+OGorQ(1) AAS
分からないなら黙っててください。
466: 名前は開発中のものです。 [sage] 04/07/22 14:51 ID:xASuzJAT(1/2) AAS
煽りキター
467: 名前は開発中のものです。 [sage] 04/07/22 17:39 ID:mpU5Xpvs(1/2) AAS
普通かどうかはベンチマークで決めればいい
468: 名前は開発中のものです。 [sage] 04/07/22 20:26 ID:jpCxn5GA(1) AAS
>>463
漏れも何を聞いとるのかよう判らんのだが取り敢えず、
喪前さんの考える「Surface を一つにまとめることの長所」を教えてくれんかいの。
察するに割とどっちでもいいような気がするんだが……。
469: 名前は開発中のものです。 [sage] 04/07/22 21:25 ID:NOi9FMd0(1) AAS
>>463ではないが、複数の領域をバラバラに確保/解放することによる
オーバーヘッドやメモリの断片化による効率低下などがあるのか?
ってところじゃないんですかね。
470: 名前は開発中のものです。 [sage] 04/07/22 21:27 ID:mpU5Xpvs(2/2) AAS
Photoshopでレイヤーを統合するかしないかくらいの意味合いだろ
471: 463 [sage] 04/07/22 22:21 ID:mBKaU+OV(1) AAS
試してみますた。
スクロールする背景部品3つを自分で合成したのと
そのままほっといて普通に処理させた方で試してみた。
結果、そのままほっといて普通に処理させたほうが早かった…
つまり、俺の書い処理の方がヘッポコでした。
メモリ使用量・動作速度でのメリットは全く無し、またsurfaceの数が
多すぎて判らなくなるなら、管理体制そのものを見直す方が良いっぽいです。
472: 名前は開発中のものです。 [sage] 04/07/22 22:42 ID:xASuzJAT(2/2) AAS
>スクロールする背景部品3つを自分で合成したのと
人間ダブルバッファをしたってこと?
473: 名前は開発中のものです。 [sage] 04/07/23 01:31 ID:k28imbO0(1) AAS
サーフェイス毎にヘッダとか余計な情報が入るだろうから
なるべく種類ごとぐらいにまとめておいた方がいんでないの
とSDL使ったこと無いやつが言ってみるテスト。
474: 名前は開発中のものです。 [] 04/07/26 13:45 ID:cbiqvpsK(1) AAS
SDLの入門のHPない?
475: 名前は開発中のものです。 [sage] 04/07/26 15:46 ID:Z8i+sT7Z(1) AAS
サンプルを物凄い勢いで弄るのがいいらしいよ。
上下前次1-新書関写板覧索設栞歴
あと 512 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s