No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 866 | 867 | 868 |...| 898 | 899 | 900 || Next»

Amazonの"持っています"リスト

Amazonで任意の商品を"持っています"にできるCGIがあるらしい.URLはhttp://www.kyo-kan.net/asin/で.とりあえず,PC関係の書籍でも登録してみようか?

爆睡してやる

30時間... 眠い.

美しいパターン

画像回転でデフォルト画像としてパターン画像を生成していたのだが,友人に美しいパターンの生成方法を教わった.生成式は x 座標と y 座標の XOR で.これをやると見事なパターンがでる.

モノクロならこんな感じで.(パターンを描いたスクリーンショット

    for(int i = 0 ; i < ImageHeight ; i++) {
      for(int j = 0 ; j < ImageWidth ; j++) {
        *p++ = (i^j)&0xff;
      }
    }

色つけるならこんな感じで.

    for(int i = 0 ; i < ImageHeight ; i++) {
      int r = (i * 0xFF) / ImageHeight;
      for(int j = 0 ; j < ImageWidth ; j++) {
        int y = (i^j)&0xff;
        int ry = r * y/0xff;
        int gy = (( j * 0xFF ) / ImageWidth) * y/0xff;
        int by = (~r&0xff) * y/0xff;
        *p++ = 0xff000000 | ry << 16 | gy << 8| by;
      }
    }

SSE と SSE2

画像回転のメインルーチンで double による計算をしていたのだが,この部分を固定小数演算に置き換えたら劇的に速くなった.キャスト要らずだし,やっぱ整数演算は速いなぁと思っていたら,コンパイル時に -msse2 をつければ double でも SSE2 命令で速くなった.同様に,double を float に置き換えても -msse (SSE) で速くなる.いまさらながらだが,これらの拡張命令のすごさを体験してみたり.ちなみに fps はノートPC で30に達した.描画しなければ 90 だけど.

ということで,記念にソースと実行ファイル一式を置いておこう.馬鹿みたいに重たいスクリーンセーバーもどきか?

テクスチャのほうが速い

画像回転でOpenGLを使っていたのだが,どうやらビットマップよりテクスチャ貼り付けのほうが速いらしい.というわけで,描画を glDrawPixels からテクスチャに切り替え.

    glEnable( GL_TEXTURE_2D );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexImage2D(GL_TEXTURE_2D , 0 , GL_RGBA , ImageWidth , ImageHeight, 0 , GL_RGBA, GL_UNSIGNED_BYTE , rotatedPixels);
    glBegin(GL_POLYGON);
        glTexCoord2f(0 , 0); glVertex2f(whiteSpace ,whiteSpace);
        glTexCoord2f(0 , 1); glVertex2f(whiteSpace , ImageHeight+whiteSpace);
        glTexCoord2f(1 , 1); glVertex2f(ImageWidth + whiteSpace, ImageHeight+whiteSpace);
        glTexCoord2f(1 , 0); glVertex2f(ImageWidth + whiteSpace, whiteSpace);
    glEnd();
    glDisable( GL_TEXTURE_2D );

40fpsキター

1024x1024 の画像回転プログラム SDL+OpenGL 版(もちろん回転は自前).Java でアルゴリズムを確かめた後にノートPC上でC++移植していたため 10fps しか出てなかった.しかし,メインマシンに移したら 40fps で動くではないか.OpenGL速いなぁ,そしてノートはやっぱ遅いんだなぁ.さーて任意の画像を白黒で回転できるようにしよう.

«Prev || 1 | 2 | 3 |...| 866 | 867 | 868 |...| 898 | 899 | 900 || Next»
Search
Feeds

Page Top