与太郎プログラマの日記 このページをアンテナに追加 RSSフィード

2010-02-21

iBook G4 + OS X 10.5.8 でも色指定が正常に反映されず。

Star Ruby 色表示の件、http://bit.ly/dk6397 の手順でのインストールを以下環境で試してみた。

結果、Color.new(0,0,0,255)が黒ではなく青で描画される現象はみな同じでした。

マシンCPUOS
Mac Pro(Early 2008)Xeon 64bitOSX 10.6(64bit)
MacBook(2006)Core Duo 32bitOSX 10.6(32bit)
iBook G4PowerPC G4OSX 10.5.8

ということでアーキテクチャは関係ない模様。

なんだろう。わたしのビルド方法が間違っているのかも。


追記1

iBook G4では、Ruby/SDLでも色合いがおかしくなりました。

via. http://jp.rubyist.net/magazine/?0018-GameProgramingForRubySDL

require "sdl"

SCREEN_W = 640
SCREEN_H = 480
HOLIZON  = 400   #地平線の高さ (一番上が 0、一番下が 399)

SDL.init(SDL::INIT_EVERYTHING)
screen = SDL.set_video_mode(SCREEN_W, SCREEN_H, 16, SDL::SWSURFACE)

# 塗りつぶし
screen.fill_rect(0, 0,       SCREEN_W, HOLIZON,          [128, 255, 255])
screen.fill_rect(0, HOLIZON, SCREEN_W, SCREEN_H-HOLIZON, [0, 128, 0])
screen.update_rect(0, 0, 0, 0)

sleep(2)

結果

f:id:yotaropg:20100222004551p:image

(上が水色、下が緑のはずだが、エンディアンのせい?)


追記2

エンディアン対応版をチェックアウトしてビルド・実行してみましたが、結果は同じでした。

色の確認は以下で行っています。

検証用コード1

require 'starruby'
include StarRuby

c1 = Color.new(0,0,0,255)
c2 = Color.new(255,0,0,255)
c3 = Color.new(0,255,0,255)
c4 = Color.new(0,0,255,255)
Game.run(100, 100, :cursor => true) do |game|
  game.screen.clear
  game.screen.fill_rect(50, 0, 50, 50, c1)
  game.screen.fill_rect(0, 0, 50, 50, c2)
  game.screen.fill_rect(0, 50, 50, 50, c3)
  game.screen.fill_rect(50, 50, 50, 50, c4)
end

結果

f:id:yotaropg:20100222200639p:image


検証用コード2

require 'starruby'
include StarRuby

Game.run(256*3, 120, :cursor => true) do |game|
  game.screen.clear
  256.times do |lv|
	game.screen.fill_rect(lv*3, 0, 3, 30, Color.new(lv, 0, 0, 255))
	game.screen.fill_rect(lv*3, 30, 3, 30, Color.new(0, lv, 0, 255))
	game.screen.fill_rect(lv*3, 60, 3, 30, Color.new(0, 0, lv, 255))
	game.screen.fill_rect(lv*3, 90, 3, 30, Color.new(255, 255, 255, lv))
  end
end

結果

f:id:yotaropg:20100221232422p:image

via. http://roukou.blog5.fc2.com/blog-entry-287.html

上の記事によるとSDLの仕様変更?みたいなことも書かれておりますが、わたしは未確認。


なんとなくビルドオプションの気もする・・・

明日からちょっと落ち着いて調べてみます。

hajimehoshihajimehoshi 2010/02/21 22:57 実行しているプログラムのソースはどんなのでしょう?

hajimehoshihajimehoshi 2010/02/21 23:18 (0, 0, 0, 255) が青くなるのはひょっとしてエンディアンの問題なのかな? と思いまして、ビッグエンディアンの場合には、 Star Ruby で扱う Color 構造体のメンバーを逆順にするように修正してみました。試していただければ幸いです。

僕は Mac OS X のアーキテクチャには明るくないのですが、リトルエンディアンであるはずの Intel Core Duo でも同じ現象になってしまうというのがよくわかりません。根本的な原因の解明には多分なってません。

yotaropgyotaropg 2010/02/22 00:54 リトルエンディアン対応版、ありがとうございました!
試しましたが、変化なしでした・・・
記事本文の検証用スクリプトを貼っておきました。ご参考まで。

Star Rubyのビルドオプションが足りないか、
パスの設定が不適切で変にビルドされたSDLを読み込んでいるか、
SDL仕様が変わっているか、

よくわからんので明日以降おちついて調べてみます。

hajimehoshihajimehoshi 2010/02/22 10:45 こまかいところですが
> game.screen.fill_rect(50, 0, 50, 50, c1)

> game.screen.fill_rect(50, 0, 50, 50, c3)
は同じところに色を塗っていますよね?

yotaropgyotaropg 2010/02/22 12:25 本当だすいません、帰ったら直します。
ちゃんと寝てから書かないといかんな...

hajimehoshihajimehoshi 2010/09/01 02:24 大変ご無沙汰しております。 Makefile の修正のおかげか、 Mac OS X の色化けが直ったという報告が上がりました。恐縮ですが、お時間があるときに試していただけませんでしょうか。 GitHub からソースを落としてきてビルドする必要があります: http://github.com/hajimehoshi/starruby

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/yotaropg/20100221/1266758270
Connection: close