Javaでゲーム作成 2本目
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2005/10/27(木) 09:43:50ID:dzSvRQXEゲーム作成以外の話題はム板(http://pc8.2ch.net/tech/)、
他言語に関する話題は他スレでお願いします。
前スレ
JAVAでゲーム作成
http://pc8.2ch.net/test/read.cgi/gamedev/1074347252/
テンプレは>>1->>10あたりを参照
0202まほろば ◆BmUbLWewsM
2006/01/28(土) 18:36:32ID:K+4gOIY6ところで、classファイルからソースコードを盗まれないようにするにはどうしたらいいんでしょ。。
0203名前は開発中のものです。
2006/01/28(土) 18:42:43ID:u3ZzJuZSクラスローダ自作したところで実行中のメモリのぞかれれば意味なし
nproではじくとかやると誰も使うやつはいなくなるぞ
ネイティブバイナリでもコンパイラの癖とあたりつければそれなりに追えるんだし・・・とわりきれ
その分開発効率がいいんだからガンガンものづくりに専念しなさいといいたい
オンラインゲーなら毎日こまめにクラスを再配布していれば大丈夫かと
0204まほろば ◆BmUbLWewsM
2006/01/28(土) 21:29:17ID:K+4gOIY6実行中のメモリのぞかれれば意味なし
そんな事出きるの?ソースは?
やろうと思えばできるとか妄想でつか?
0205名前は開発中のものです。
2006/01/28(土) 21:37:25ID:EnQtmKxXメモリ覗くだけならWindows上で実行しちゃえば簡単だろうけど、
手軽に解析って話は俺も聞いたこと無いな。
うちの会社はDashOとかいうバカ高い難読化ツールを買った。
そんな必要無ぇって主張は通らなかった。
0206名前は開発中のものです。
2006/01/28(土) 22:44:25ID:PUcSGIMg0207名前は開発中のものです。
2006/01/28(土) 23:06:37ID:u3ZzJuZS多少は調べろ
クラスロードした後はざる
0208まほろば ◆BmUbLWewsM
2006/01/28(土) 23:57:58ID:K+4gOIY60209名前は開発中のものです。
2006/01/29(日) 01:11:24ID:1KG7yFUT0210名前は開発中のものです。
2006/01/29(日) 02:35:06ID:PecoYXTpいいご身分だなぁ。
0211名前は開発中のものです。
2006/01/29(日) 12:34:08ID:FRX/ORuzさらに良いご身分だな
0212まほろば ◆BmUbLWewsM
2006/01/29(日) 13:24:43ID:LX0lKjST0213名前は開発中のものです。
2006/01/29(日) 17:14:26ID:zbiz4Pm/ゲームのキャラクターを表示させるためにはint型では精度が悪いんで。
0214まほろば ◆BmUbLWewsM
2006/01/29(日) 17:28:00ID:LX0lKjST0215名前は開発中のものです。
2006/01/29(日) 17:45:07ID:ec+1eYbrそういうときは大きいバッファを持つことで回避する
320*240の画像を0.5単位で扱いたいときは640*480とかね
drawRenderedImageとかtranslateを使う方法もあるが
用途がゲームなら使わないほうがすっきりしていいと思われ
0216名前は開発中のものです。
2006/01/29(日) 17:57:12ID:2i9o9yjBGraphics2D でもいいのなら AffineTransform を使えばできる。
デフォルトでは AffineTransform を使用しても補完してくれないので、
補完方法を設定する必要がある。
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2.drawImage(image, transform, null);
こうすると 0.01 単位でヌルっと動かせるけど、それなりに重くなるし
画質もはっきりしたりぼやけたりするので逆にオススメできない。
キャラ自身の内部座標を小数点で扱うのは自由だけど
画像の描画に関しては座標を int で処理するのが現実的だと思う。
0217名前は開発中のものです。
2006/01/29(日) 21:48:41ID:qPM3IQVC0218名前は開発中のものです。
2006/02/01(水) 20:44:05ID:W1eX6IZO0219名前は開発中のものです。
2006/02/05(日) 00:25:12ID:LCSDYznupublic static void main(String[] args) {
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = env.getDefaultScreenDevice();
JFrame frame = new JFrame(device.getDefaultConfiguration());
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
MyPanel panel = new MyPanel();
frame.getContentPane().add(panel);
}
こんな感じでフルスクリーン化するフレームの上にパネルをはりつけてます。
このときフルスクリーン状態にはなるんですが、パネルのpaintComponent()が
呼ばれてないらしく描画されません(画面が真っ白のままでサウンドはなります)
panelのpaintComponent()が呼ばれるにはどう修正すればよいでしょうか。
0220名前は開発中のものです。
2006/02/05(日) 00:52:34ID:NFbwVJ0FBufferStrategyってのをしらべてごらん
ようは好きなタイミングで描画が出来るのだ
0221名前は開発中のものです。
2006/02/05(日) 01:21:52ID:LCSDYznuやっぱそれですか。そうかもと思って実装始めたらできました。
frame.createBufferStrategy(2);
とやってpaintComponent(g)をdraw(g)にかえて
BufferStrategy strategy = window.getBufferStrategy();
Graphics g = strategy.getDrawGraphics();
draw(g);
g.dispose();
でうまく描画できました。
0222219
2006/02/05(日) 01:30:28ID:LCSDYznuWindow window = device.getFullScreenWindow();
window.add(JPanelオブジェクト);
とやってフルスクリーン上にパネルを置いています。
こうするとパネルがちらついてしまうのですが対策はあるでしょうか。
0223名前は開発中のものです。
2006/02/05(日) 01:52:48ID:8ByMu9YSウインドウ全体を使って描画してるから
0224219
2006/02/05(日) 09:38:19ID:LCSDYznuフルスクリーン上でスペース押すと右上にパネルが表示されます。
KeyboardListenerを実装してるのでキー入力はそのパネルが奪い
パネルを消すともとのフルスクリーン上にキー入力がいくという感じです。
パネルじゃなくてCanvasでもいいんですがどうもちらつきます・・・
パネルで何も描画しなくてもちらつくということはフルスクリーンにしてる
JFrame上にコンテナは置いちゃだめということでしょうか。
0225名前は開発中のものです。
2006/02/05(日) 12:29:26ID:8ByMu9YS0226219
2006/02/05(日) 13:00:29ID:LCSDYznuあきらめてパネル風のウィンドウを描画することにします。
0227名前は開発中のものです。
2006/02/05(日) 13:25:23ID:8ByMu9YSすべて自前で描画しないとリフレッシュとかのタイミングがコントロールできん
0228名前は開発中のものです。
2006/02/05(日) 14:37:09ID:15xceU0H英語だけなら楽勝かもしれないけど、漢字変換とかどうすればいいのかさぱーり。
以前コンポーネント埋め込んだら酷いことになって諦めてた
0229名前は開発中のものです。
2006/02/05(日) 14:40:46ID:LCSDYznu0230名前は開発中のものです。
2006/02/05(日) 15:23:24ID:8ByMu9YSといった作りかたしてると思われ
JavaでやろうとするならBufferStrategyをあきらめるほうがいいだろうね
JPanelに画面部分を描画、paintComponentでバックバッファから自前で転送
0231名前は開発中のものです。
2006/02/05(日) 17:31:23ID:XoC15JKPLWJGLやJOGLで日本語文字を画面に表示するにはどうしたらいいんでしょうか。
LWJGLにAWTGLCanvasっていうのがあって、これを使えばできそうなんですが、
サンプルがなく使い方がいまいち分かりません。
みんなはどうやっているんだろう。
以前Graphics2Dでゲーム作ろうと思ったけど、アルファブレンド処理がソフトウェア描画に
なったので、LWJGLに移ったんですが。
うううーーーん
0232名前は開発中のものです。
2006/02/05(日) 17:43:24ID:8ByMu9YS一応オプションでDirect3Dで動作させればアルファブレンドもハードウェアになるが
レンダリング品質の問題とか通常一番使うブリットが遅いとかJava2Dベースでは
通常合成しか出来ないとかが問題になるからな
LWJGLはまったくさわったことがないのでわからん
JOGLはOpenGLそのままだね
俺が触ったときはSDLとのリンクが未実装だったので対象には上がらなかったが
Java3Dは高級すぎてゲーム用途にはまったく使えないという感じだった
速度がまったくでないことやピクセル単位の処理という感じではなかった
ただ、軽く触っただけなのでなんともいえない
2Dゲームならソフトウェアによるアルファブレンドが問題になるほど遅い場面は少ないとは思う
0233名前は開発中のものです。
2006/02/05(日) 19:35:20ID:XoC15JKP>>232
640x480の画面に32x32のマップをひきつめただけですでに40FPSだったんですよね
Graphics2D。。。
やっぱりC++の方がゲーム開発はいいのかなぁ・・・
開発効率はJavaの方がはるかにいいんですけどね
何かJOGLやLWJGLに近い速度がでるゲーム用ライブラリって
ないんでしょうか
0234名前は開発中のものです。
2006/02/05(日) 19:44:36ID:8ByMu9YS通常転送ならそこまで遅くなることはあるまい
使い方がおかしいかと
0235名前は開発中のものです。
2006/02/05(日) 19:48:54ID:XoC15JKP>>234
アルファブレンドで描画したときです。
正直なきたくなりました。
同様の処理でDirectXの場合は余裕を持たせてもFPS500ぐらいでした。
0236名前は開発中のものです。
2006/02/05(日) 20:03:06ID:8ByMu9YSPureJavaベースのゲームなら少し前のコンシューマの2Dベースにしておくべき
アルファブレンドが多い場合は自前のエンジンを使ったほうがいい
Java2Dのアルファブレンドは機能が多すぎて高級すぎる
回転とかも同様
あとメモリアクセスを減らすために解像度を下げるとか
今後を考えてレンダリングエンジンはマルチコアに対応させる
現状を考えると320*240-16bppが2DでJavaでの安定動作の限界だと思うよ
それを2倍拡大して描画するのがベストか
Sunはデスクトップ部分に5.0は力を入れるといいつつ
1.4.2とほとんど変わらなかった前科があるから6にも期待薄だな
0237名前は開発中のものです。
2006/02/05(日) 20:25:57ID:15xceU0H0238名前は開発中のものです。
2006/02/05(日) 21:05:19ID:8ByMu9YS強度の最適化のために滑らかに動かない
0239名前は開発中のものです。
2006/03/01(水) 00:33:42ID:LBMCdldERPGツクールでキーボード名前入力を可能にした感じのゲームも可能なのかな。
でもそんなことしてたらMMORPGなんて作れない気もする。
-serverの件もそうだけど、なんかもどかしい
0240名前は開発中のものです。
2006/03/01(水) 00:53:30ID:iPnrcY6DAWTなのであまり込み入った使い方しないように
0241名前は開発中のものです。
2006/03/01(水) 01:34:48ID:LBMCdldEゲーム画面上に透明チャット窓とかしようとするのも可能そうだね。
BufferStrategyならAWTとSwingの差分なんてあってないようなものだろうし。
ちょっと希望が湧いてきました。
0242名前は開発中のものです。
2006/03/01(水) 02:35:02ID:LBMCdldE0243名前は開発中のものです。
2006/03/04(土) 19:59:23ID:+Bxv4duPTimerのタイミングできちんと描画スレッドに渡せますか?
0244名前は開発中のものです。
2006/03/04(土) 23:22:41ID:EEF7QBKsリペイントわたしてもリペイント範囲のaddされるだけ
連続でrepaint複数渡しても1回しかリペイントされないとかよくあること
これはSwingに限ったことではない
Windowシステムは全部そう
だからTimerでrepaintわたしたからすぐに描画されるわけではない
正確なタイミングでやるならAWTイベントでのリペイントは辞めるべき
BufferStrategyを使うのが正しい
これは内部でDirectXとか使われてるイベントモデルではなく、いわゆる直書きだ
0245名前は開発中のものです。
2006/03/05(日) 13:59:16ID:R322THrXFPS管理するからrepaintのままでやります。
描画に失敗したら致命的というわけでもありませんし。
0246名前は開発中のものです。
2006/03/05(日) 14:46:49ID:o20ilzioなんか勘違いしてないか?
0247名前は開発中のものです。
2006/03/05(日) 15:12:44ID:R322THrX0248名前は開発中のものです。
2006/03/05(日) 16:46:58ID:o20ilzioダブルバッファリングをライブラリに任せるのは割ときついからな
0249名前は開発中のものです。
2006/03/15(水) 01:15:11ID:cXOEjtfT0250名前は開発中のものです。
2006/03/18(土) 15:46:10ID:bpOUjL+k良スレですね。
6年ぶりぐらいにJava触って驚いた〜。
趣味の遊びには最適ですね。
0251名前は開発中のものです。
2006/03/18(土) 23:01:07ID:ATXsVevnヒープサイズをjrockitと同じ物理メモリの75%とかに指定したいんだけど
exewrapにはそういう指定は出来ないんだろうか
128m版と256m版の2つ用意したほうがいいかな・・・うーむ
0252名前は開発中のものです。
2006/03/18(土) 23:25:32ID:xwepgm3Jメモリ増えればGCにかかる時間は増えるわけで、ゲームで使用するメモリ量とかちゃんと計算してないの?
それだとGCとかでかたつかないか?
0253名前は開発中のものです。
2006/03/19(日) 00:20:58ID:jd/0wDmz0254名前は開発中のものです。
2006/03/19(日) 00:26:14ID:UecNa0OIそれにわりあいでやられたら世代の調整とかおわっとる
GCのアルゴリズムの種類だって調整するのは常識なんだし
アプリごとに最適な値は大きくことなる
0255名前は開発中のものです。
2006/03/19(日) 00:34:10ID:jd/0wDmz最適値というのは演算分のヒープサイズがどのくらいのものなの?
0256名前は開発中のものです。
2006/03/19(日) 00:50:29ID:UecNa0OI-verbose:gcオプションいれてごらん
もっと詳しく見たいのならプロファイラで見るのが一番だが
まずはGC部分に注力するならこれが見やすいだろうね
0257名前は開発中のものです。
2006/03/19(日) 00:58:12ID:jd/0wDmzOK、チャレンジしてみます。
0258名前は開発中のものです。
2006/03/31(金) 14:22:07ID:5bd8BEHKまぁアルゴリズムとかは結構わかります。
今頃になって、再びプログラムを趣味にしてみようと思いJavaを選択しました。
シンタックスやOOPの基本的なことは大丈夫そうです。
Eclipseインストールしてちょっと感激。
で、問題なのはすこしでもDirectDrawとかFPS管理とか、ちょっとでもシステム寄りの
部分になると全然わからないのです。
いくつかソースを読んでみますと、各人でわりと実装が違うようですね。
Java5ではどんな方法がよいのかなど、参考になるものは無いでしょうか。
0259名前は開発中のものです。
2006/03/32(土) 00:20:26ID:dul/XEV4そういう人かなりいるよね
ゲームは問題なく作れるけどウインドウアプリになるとmainからはじまらないので
わけがわからない、と
Javaは一応mainから常に始まるしまだ楽なほう
>>1-11あたりはまずよんでみた?
0260名前は開発中のものです。
2006/03/32(土) 01:27:44ID:liMA6BYm0261名前は開発中のものです。
2006/04/04(火) 13:36:48ID:oy1ylhQ+http://pc8.2ch.net/test/read.cgi/tech/1099300344/274-
> 280 名前:デフォルトの名無しさん[sage] 投稿日:2006/04/04(火) 09:53:59
> >>276
> ほんとかよ。
> 2Dゲームの背景にタイルを敷き詰める処理を作ってみたが明らかに遅いぞ。
> これと言って変な処理は入れてないが、5fps出ない。
>
透過pngをImageIO.read()で読み込んで
Graphics.drawImage(Image, int, int, ImageObserver)で表示すると確かに重くなるが
上の奴はこれと同じ状況なのだろうか?
0262名前は開発中のものです。
2006/04/04(火) 13:41:10ID:h6nMnOJP5.0ではBufferedImageのままなにもしなくてもそれなりにきくようになってるし
5fpsってありえんね
そもそもソフトウェア描画でもVGAで30fpsはでそうだが
0263名前は開発中のものです。
2006/04/06(木) 12:59:32ID:kzyZx0iOサンプルではちゃんと表示されるんですが、画像を自作のものと入れ替えるとIO.connectionexception
ってのがでるんです。サンプルと同じGIFでサイズも同じにしてあるんですが。自作画像の方に問題が
あるんでしょうか。
0264名前は開発中のものです。
2006/04/06(木) 14:20:33ID:mP0GEHd4動かないのが実機かPC上かを明記してもらえるとありがたい
サンプルがどんな処理を行うアプリケーションなのかも関係してくる
情報が少なすぎるのでエスパー回答してみるが、
・ファイルが壊れている
終端コードが無かったり、BMPなのに拡張子だけGIFにしたとか
試しにネット上に転がってる別のGIFファイルでテストしてみては?
・ファイル名の指定が間違っている
サンプルと同じファイル名にしてテストしてみては?
大文字小文字、全角半角の違いがないか気をつけて
・容量がオーバーしている
同じサイズというのはピクセル数のことだと思いますが、
バイト数が上限を超えていないか確認してください。
0265名前は開発中のものです。
2006/04/06(木) 17:15:27ID:kzyZx0iOサンプルは簡単なもので、画面にタイトルを表示するだけのものです。十枚ある画像を取り込んで
そのうちの一つを画面に表示するものです。
ファイルが壊れている>壊れているかは私に判断できないんですが、自作の画像はwindowsのペイ
ントで書いて、0という名前で(サンプルで表示されるのが0.gif)形式をGIFにしています。
容量がオーバー>サンプルは色付きですが、自作のものは白と黒のみなのでサイズは小さいです。
いろいろ試してみたんですが、サイズの違う画像の時に一回エラーがでずにちゃんと表示されて、
その画像の大きさをいろいろ変えたんてみても上手く表示されました。やはり元の画像が悪いので
しょうか
0266名前は開発中のものです。
2006/04/06(木) 17:20:56ID:kzyZx0iOエラーが出たままなんです。
0267263
2006/04/08(土) 17:16:17ID:+i1+4exUお騒がせしました。264さんありがとうございます。
0268名前は開発中のものです。
2006/04/08(土) 21:22:15ID:MsUK1t+Nビルドしてないとか
0269名前は開発中のものです。
2006/04/09(日) 20:57:47ID:S2mcpQ+Rメモリが不足してたのかな?
0270263
2006/04/09(日) 23:11:53ID:TOyrHTNi一枚ずつ入れ替えていったらエラーがでなくなりました。言われてみれば一回電源切った
あとかも
0271名前は開発中のものです。
2006/04/10(月) 02:20:42ID:tKGbAe46わかんないならもうレスしなくていいよ
0272名前は開発中のものです。
2006/04/15(土) 01:23:46ID:sf5nUDiwアップローダにアップしては?
http://gamdev.org/up/upload.php
短いソースならこのスレに書き込んでもいいだろうし。
0273名前は開発中のものです。
2006/04/15(土) 10:51:05ID:0dEqMUag書き込みがあるとわくわくする
0274名前は開発中のものです。
2006/04/15(土) 11:44:35ID:HLCHM0AlこのスレはJavaアプリのこと?アプレットのこと?
サーバ側の話?J2MEのこと? なんでもあり?
それよりなにより、漏れは女とJavaTea飲みたい。
0275名前は開発中のものです。
2006/04/15(土) 16:50:42ID:hisjoupK基本はJavaアプリだろうね
アプレットは社内用リッチクライアント用途ではかなりいいけど
アプリと違って起動時のパラメータとかチューニングが限界がある
アプリによってメモリやGC等の設定は細かくかえるのが普通だから
ゲーム用ではさほど・・
フルスクリーンとかファイルアクセスとか限界もあるしね
手軽に配布ということでフラッシュ程度でいいのならフラッシュで作ればいいし
JavaでやりたいのならWebStartにしたほうがまし
JRE同梱してアプリにしたほうがいいよ
0276名前は開発中のものです。
2006/04/15(土) 18:40:50ID:nQHtm5rD速度的には全然遜色ないな。
アプレットでも結構作れる事は作れるけど、開発環境などその他諸々の点で
フラッシュの方が断然上。
アプレットでゲームを作るメリットは何もないよ。
0277名前は開発中のものです。
2006/04/15(土) 18:57:48ID:AcPPvKEl0278名前は開発中のものです。
2006/04/15(土) 19:10:16ID:Vc+Xe/9jだったらActionScript3.0がパブリッシュ(コンパイルの意)出来る環境があれば
あとはAPIリファレンスを手に入れるだけで何とかなりそう
0279名前は開発中のものです。
2006/04/15(土) 21:04:45ID:hisjoupK配布を考えればの間違いでは?
開発環境はアプレットのほうがどこをどう考えても上
アクションスクリプトきっついよ
0280名前は開発中のものです。
2006/04/15(土) 22:36:11ID:lpccgP2zASの開発しづらさを知ってて言ってるのか?
マジキツイっての、アプレットと作り比べてみろよ。
0281名前は開発中のものです。
2006/04/21(金) 18:53:51ID:7zcsjMK6Flashは覚えても応用範囲が狭そう
0282名前は開発中のものです。
2006/04/26(水) 22:50:39ID:h83t4bfk俺はC→AS→Javaだったよ
ASだけは遊びで覚えたんだけど、OO開発の基礎は自然と身についた
MovieClipの仕様がいいんだろうな
0283名前は開発中のものです。
2006/04/29(土) 05:29:13ID:e8m8pSlvここじゃ晒さないんですか?
0284名前は開発中のものです。
2006/05/01(月) 20:40:07ID:nUaQGh3S有料のはDLsite.com等で販売中。
0285名前は開発中のものです。
2006/05/07(日) 00:14:23ID:W2WiM6Ar以前j2re1.4.1_02でフルスクリーンとウィンドウモードを切り替えるものを作ったのですが
1.5.0_06では解像度の変更が正しくうごかないという事に当たりました。
手順は
1)フルスクリーンにする
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = ge.getDefaultScreenDevice();
DisplayMode fullscreen = new DisplayMode(640, 480, 32, DisplayMode.REFRESH_RATE_UNKNOWN);
device.setFullScreenWindow(fullscreen);
2)排他を解除しウィンドウモードにする
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = ge.getDefaultScreenDevice();
device.setFullScreenWindow(null);
この後で1)を行った場合、1.4.1_02ではフルスクリーンで解像度が変わったのですが
1.5.0_06ではフルスクリーンにはなるが解像度が変わらないということになりました。
何かご存知の方がいらっしゃったらお願いします。
0286285
2006/05/07(日) 00:27:33ID:W2WiM6Ar1)では決まったフレームをフルスクリーン指定してます。
device.setFullScreenWindow(frame);
0287名前は開発中のものです。
2006/05/07(日) 02:17:45ID:5a9PuC3kところで意味が分かりにくいのだが
1>2>1ってこと?
0288285
2006/05/07(日) 02:57:40ID:W2WiM6Ar>元々フルスクリーンと行き来するとリークが発生するから起動時に選択させるほうがいい
ありがとうございます、その方向で考えてみます。
>1>2>1ってこと?
そうです。
0289名前は開発中のものです。
2006/05/07(日) 11:37:59ID:5a9PuC3k0290285
2006/05/07(日) 14:11:36ID:W2WiM6Arj2re1.4.1_02では、繰り返し切り替えたときにちゃんと解像度も一緒に変わったのですが
1.5.0_06ではフルスクリーンにはなりましたが、二度目以降のフルスクリーン切り替えで
解像度が変わりませんでした。(一回目はちゃんと解像度が変わるようです。)
もしうまく切り替わったのでしたらソース、上げていただけませんでしょうか?
0291名前は開発中のものです。
2006/05/07(日) 14:15:43ID:5a9PuC3kGraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();
DisplayMode mode = new DisplayMode(640, 480, 32, DisplayMode.REFRESH_RATE_UNKNOWN);
JFrame frame = new JFrame(gc);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
device.setFullScreenWindow(frame);
device.setDisplayMode(mode);
Thread.sleep(1000);
device.setFullScreenWindow(null);
Thread.sleep(1000);
device.setFullScreenWindow(frame);
device.setDisplayMode(mode);
0292名前は開発中のものです。
2006/05/07(日) 14:17:41ID:5a9PuC3k色深度が違う場合テクスチャキャッシュとか全部作り直してね
異なる色深度で転送を行うとすごく遅くなる
0293285
2006/05/07(日) 14:20:50ID:W2WiM6Ar確認してみます。
0294285
2006/05/07(日) 15:30:17ID:W2WiM6Ar先ほどのソースありがとうございました。
フレームの非表示をフルスクリーンとウィンドウ毎にきりかえりため
毎度フレームをdisposeし、再作成していたが原因でした。
ところで、上記ソースのやり方でフルスクリーンのときにだけ
frame.setUndecorated(true);
を有効にしたいとおもい、いくつか試しているのですがうまくいっていません。
作成していたソースを載せておきますので、再度も一度だけご指摘いただけますでしょか?
0295285
2006/05/07(日) 15:33:08ID:W2WiM6ArGraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();
DisplayMode mode = new DisplayMode(800, 600, 32, DisplayMode.REFRESH_RATE_UNKNOWN);
JFrame frame = new JFrame(gc);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
System.out.println("初期表示");
frame.setSize(800, 600);
frame.setResizable(false);
frame.setLocationRelativeTo(null);//中央配置
frame.setVisible(true);
Thread.sleep(10000);
System.out.println("フルスクリーンへ");
//frame.setUndecorated(true);//フレームの非表示
device.setFullScreenWindow(frame);
device.setDisplayMode(mode);
Thread.sleep(10000);
System.out.println("ウィンドウモードへ");
device.setFullScreenWindow(null);
0296名前は開発中のものです。
2006/05/07(日) 16:01:17ID:5a9PuC3k>フレームが表示されていない時にだけ呼び出すことができます。
マニュアルどおりだと思うんだが
タイトルバーの表示、非表示はフレームが表示されているときは駄目
一度非表示にする必要があるよ
0297名前は開発中のものです。
2006/05/07(日) 16:03:32ID:5a9PuC3kGraphicsDevice device = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();
DisplayMode mode = new DisplayMode(640, 480, 32, DisplayMode.REFRESH_RATE_UNKNOWN);
JFrame frame = new JFrame(gc);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
device.setDisplayMode(mode);
for(int i=0; i<10 ;i++){
Thread.sleep(1000/2);
//ウインドウモード
frame.setVisible(false);
frame.dispose();
frame.setUndecorated(false);
device.setFullScreenWindow(null);
frame.setVisible(true);
Thread.sleep(1000/2);
//フルスクリーンモード
frame.setVisible(false);
frame.dispose();
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
}
0298名前は開発中のものです。
2006/05/07(日) 16:06:27ID:5a9PuC3k0299285
2006/05/07(日) 17:03:17ID:W2WiM6ArsetVisible(false); の後でdisposeが必要なのですね、
わからずに数ヶ月引っかかっていました。
297でいただいたサンプルなのですが、最後のフルスクリーンの状態で
解像度が640, 480ではなく元に戻っていませんでしょうか?
これを何とかできないかなと
//フルスクリーンモード
frame.setVisible(false);
frame.dispose();
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
device.setDisplayMode(mode);
としてみたのですが、今度はウィンドウモードの解像度が戻らなくなってしまいました。
これが一番最初の質問と同じ状態のようです。
0300名前は開発中のものです。
2006/05/07(日) 17:32:54ID:5a9PuC3k//ウインドウモード
device.setFullScreenWindow(null);
frame.setVisible(false);
frame.dispose();
frame.setUndecorated(false);
// device.setFullScreenWindow(null);
frame.setVisible(true);
としてごらん
■ このスレッドは過去ログ倉庫に格納されています