glPointSize

3月 27th, 2007 tocmoc

 

C++:
  1. glPointSize(float size)

 glPointSizeの引数には,0.0よりも大きな値を指定する.(デフォルトは1.0)

この値は,スクリーンに描画されるピクセル幅の一辺で,
例えば2.0とすると,一辺が2ピクセルの,2x2ピクセルがポイントとして描かれる.

アンチエイリアシングを有効にしておけば,floatの値でも反映されるようになる.

ただ,ピクセル値指定なので,ポイント間のスキマが空いてしまったりする.もし縦横のグリッドを描きたいような場合は,GL_TRIANGLESとかGL_QUADSとかでポリゴンを作った方がキレイ.

photoshopの起動時にエラー

3月 22nd, 2007 tocmoc

phtoshop7.0の起動時に,こんなエラーが出た

Unable to continue because of hardware or system error. Sorry, but this error is unrecoverable.

 Ctrl+Alt+Shiftを押しながらphotoshopを起動し直したら,あっさりエラーは消えた.どうやら環境設定ファイルが壊れていたようだ.

エラーの表示

3月 6th, 2007 tocmoc

OpenGLのエラーを得るためには, 

GLenum glGetError(void void)

を使う.

C++:
  1. std::cout <<glGetError() <<std::endl;

とかやると,エラーの番号が返ってくる.例えば,1282とか.この数字を,16進数にすると,0x0502.そこで,OpenGLのヘッダGL.hを見てみると,下のようなエラーコードが書いてあるので,エラーは,GL_INVALID_OPERATIONということが分かる.

C++:
  1. /* ErrorCode */
  2. #define GL_NO_ERROR                       0
  3. #define GL_INVALID_ENUM                   0x0500
  4. #define GL_INVALID_VALUE                  0x0501
  5. #define GL_INVALID_OPERATION              0x0502
  6. #define GL_STACK_OVERFLOW                 0x0503
  7. #define GL_STACK_UNDERFLOW                0x0504
  8. #define GL_OUT_OF_MEMORY                  0x0505

 

 

RGBとビットシフト

3月 5th, 2007 tocmoc

proce55ingを使っていた時に知ったTipsなのだが,ビットシフトを使ってRGBの値を高速に操作する方法があった.

RGBを指定する時に,各色の情報から,int型,32ビット(4バイト)のRGBAのカラー情報を,ビットシフト演算を使って高速に作ることができるというものだ.

ビットが,AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBBのように並んでいた場合,RGBデータは,次のようにして作ることが出来る.

C++:
  1. int R = 20;
  2. int G = 255;
  3. int B = 100;
  4. int color = R <<16 | G <<8 | B;

逆に,カラー情報からRGBの各要素を取り出すためには,次のようにする.

C++:
  1. int R = color>> 16 & 0xff
  2. int G = color>>  8 & 0xff
  3. int B = color    & 0xff

アルファチャンネルを取り出したければ,次のようにする

C++:
  1. int A = color>> 24 & 0xff

改行を<br />に変換

3月 2nd, 2007 tocmoc

string nl2br(string str)
改行文字をBRタグに変換してくれる関数.

改行文字・・・\n,\r\n,\rなど

※ 以下タグ<>には全角文字を使っています

PHP:
  1. $aaa = "hoge\nhoge";
  2. $bbb = nl2br($aaa);
  3. echo  "bbb=" . $bbb;

HTML:
  1. 結果
  2. bbb=hoge<br />hoge

追記:
改行文字をbrに変換してくれるのはPHP 4.0.5より前のバージョンまで.
それ以降は,改行文字の前にbrを挿入するという仕様になっている.
つまり,

PHP:
  1. nl2br("hoege\nhoge")

の結果は,

HTML:
  1. "hoege<br />\nhoge"

になるということ.

では,改行文字を消して変換するにはどうしたらいいかというと,
正規表現を使った文字列置換を使えばよい.

PHP:
  1. ereg_replace("(\r\n|\r|\n)", "<br />", $str)