トップ 最新 追記

ohai日誌

2003|12|
2004|01|02|03|04|05|06|07|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|06|08|10|11|
2008|01|02|03|04|05|07|09|
2009|01|02|
2013|06|12|
2014|01|02|03|04|06|09|10|12|
2015|04|
2016|09|
2018|02|

2006年03月01日

_ メモ

Ruby/SDL(or SDL)でalpha値を持ったサーフィス(PNGからロードした場合など) を描画するためには以下のようにする必要がある。

image = SDL::Surface.load("image.png")
image.set_alpha(SDL::SRCALPHA|SDL::RLEACCEL, SDL::ALPHA_OPAQUE)
image = image.display_format_alpha

あとは image を SDL.blit_surface を使って描画すれば良い。

本日のツッコミ(全2件) [ツッコミを入れる]

_ deskull [参考になりました。]

_ サイロス誠 [なるほど。参考になります。]


2006年03月04日

_ Ruby勉強会@関西第9回

3/11のRuby勉強会@関西では私が Ruby Refactoring Browser について話をする予定です。是非聞きにきてください。


2006年03月06日

_ RRSE

ver 0.2を公開しました。変更点は、以下のとおりです。

  • 起動の高速化(rrse-refe-listdescsの結果をあらかじめファイルに出力しておく)
  • 環境変数 REFE_DATA_DIR を見るようにした

2006年03月07日

_ R-TYPE

R-TYPESのを一周したよ。2週目はもういいか。


2006年03月08日

_ ruby の -S オプションと rrb.el

rubyには -S というオプションがあることに最近気が付きました。 これは「指定したスクリプトをPATHの中から探索する」というものです。 おそらく Windows 用に作られたものだと思います。

で、これを使えば、exerbなどで rrb のコマンドをexe化しなくとも rrb.elがwindowsで使えるようにできます。 CVS HEADではこの改造を施してあります。 xyzzyのrrb.lでも このパッチを使うことで同様のことが できます(一応 rename local variable と extract method は簡単な 動作確認をしました)。



2006年03月12日

_ Ruby/SDL + OpenGLの性能

ソフトウェアサーフェス使うよりハードによる高速化が効くOpenGL使ったほうが はやいんじゃないかという話をしたのですが、実際に試したわけではないので いろいろやってみることにしました。

調べたのは単純な「読みこんだ画像を表示」というものです。

で、結論はビデオカード/チップおよびドライバによる、というものでした。

Athlon64 3200+, GeForce6600GT, WindowsXP という環境ではOpenGLの方が2倍以上速い。

CeleronM 1.4G, Intel 855, Windows XP という環境では ソフトウェアサーフェス のほうが 1.5 倍ほど速い。

CeleronM 1.4G, Intel 855, Debian GNU/Linux, DRI on という環境では ソフトウェアサーフェスのほうが 5 倍以上速い。

こんな所です。適当な実験なのであまり結果は信用しないでください。

ちなみに実験に使ったスクリプトは以下の通りです。

# SWSURFACE用
require 'sdl'

SDL.init(SDL::INIT_VIDEO)
#screen = SDL.set_video_mode(640, 480, 16, SDL::HWSURFACE|SDL::FULLSCREEN)
#screen = SDL.set_video_mode(640, 480, 16, SDL::HWSURFACE|SDL::DOUBLEBUF|SDL::FULLSCREEN)
screen = SDL.set_video_mode(640, 480, 16, SDL::SWSURFACE|SDL::FULLSCREEN)

fill = SDL::Surface.load("images/640x480.png")
fill = fill.display_format

count = 0

start = SDL.get_ticks
loop do
  while event = SDL::Event2.poll
    case event
    when SDL::Event2::Quit, SDL::Event2::KeyDown
      puts "frame: #{count}"
      d = SDL.get_ticks - start
      puts "time: #{d}ms"
      puts count.to_f / (d/1000.0)
      exit
    end
  end

  screen.fill_rect(0, 0, 640, 480, 0)

  50.times{ SDL.blit_surface(fill, 0, 0, 640, 480, screen, 0, 0) }
  #SDL.blit_surface(fill, 0, 0, 640, 480, screen, 0, 0)

  screen.flip
  count += 1
end


# OpenGL用
require 'sgt'

def quit
  puts $count
  d = SDL.get_ticks - $start
  puts d
  puts $count.to_f / (d/1000.0)
  exit
end

SDL.init(SDL::INIT_VIDEO)
SDL.setGLAttr SDL::GL_RED_SIZE,8
SDL.setGLAttr SDL::GL_GREEN_SIZE,8
SDL.setGLAttr SDL::GL_BLUE_SIZE,8
SDL.setGLAttr SDL::GL_DEPTH_SIZE,16
SDL.setGLAttr SDL::GL_DOUBLEBUFFER,1
SGT.init(640, 480, 32, SDL::FULLSCREEN)

fill = SGT::Texture.load("images/640x480.png", false, 0)
SGT.disable_alpha_test

$count = 0
$start = SDL.get_ticks
loop do
  while event = SDL::Event2.poll
    case event
    when SDL::Event2::Quit
      quit
    when SDL::Event2::KeyDown
      quit if event.sym == SDL::Key::ESCAPE
    end
  end

  SGT.clear(0, 0, 0)

  50.times{ fill.draw(0, 0) }

  SDL.GL_swap_buffers
  $count += 1
  quit if $count > 100
end
本日のツッコミ(全2件) [ツッコミを入れる]

_ サイロス誠 [一番無難なのはハードウェアサーフェスのようですね。]

_ サイロス誠 [Intel855は内部で3Dアクセラレータ持ってないので、そこがビハインドになっているようです。]


2006年03月16日

_ 春合宿

今日から19日までKMCの春合宿で IP unreachable になります。


2006年03月25日

_ locale

Linux上でもja_JP.SJISのようなロケールを作っておくとたまに便利なことがあります。 具体的にいうと国際化についてあまり良く考えていないJavaアプリケーション (とくにJavaアプレットの類)の日本語の扱いがおかしい場合などです。

これが正しいやりかたかどうかは知りませんが。


2006年03月26日

_ SDL_mixer

最近 Mix_LoadWAV でOGGをロードできることに気がつきました。 つまり複数のOGGをMixingして同時演奏することができるわけです。

Ruby/SDL でも SDL::Mixer::Wave.load で OGG がロードできます。

ただしロード時にデータすべてをRAWデータに展開しているようなのでメモリの 使用量に注意しましょう。


2006年03月30日

_ 最近のこと

引越しました。


2006年03月31日

_ fontlist

Windows もしくは Unix like OS 上でインストールされているフォントファイル へのファイルパスを得るためのツール。

<URL:http://d.hatena.ne.jp/mmatsuoka/20060312#1142135916> に書かれて いるような問題を解決できます。サイロスさんもこのような問題について 考えていたような気が。

このライブラリはあまり知られていないようなのでここに書いておきます。


トップ 最新 追記