Entries from 2010-03-01 to 1 month

objcメモ

id型でプロパティーのドットアクセスが使えないとTLにあったので、素のid型ではないのですが、一工夫してidでドットアクセスする方法についてメモします。 Objective-Cではアクセサを記述するのに、インターフェースに書く場合と、プロトコルに書く場合とが…

SICP問題1.12をやってみた。

clですが。 なんか問題の捉え方が間違ってる気がするのでまたこんどやり直します。 (defun pas-accum(array) (let ((last-left 0)) (mapcar #'(lambda (x) (let ((left last-left)) (setf last-left x) (+ left x))) (append array '(0))))) (defun pas-r(p …

マクロおぼえたて

基礎的なことはサッパリなのに、マクロをとりあえず使ってみることに。 必要性があって使ってるわけではないけれど、勉強中ということでご容赦を。ネタはまたも4x4の逆行列。 オリジナルはnvidia OpenGL SDK 10.5のものです。http://gist.github.com/340940

ループ

for( int i = 0; i みたいなループを使いたいわけですが、(loop for i from 0 to 10 collect i) だと (0 1 2 3 4 5 6 7 8 9 10) となり、一個多くなってしまいます。aboveとbelowをtoの部分に使えること知り、早速試してみることに。(loop for i from 0 belo…

勉強中

http://blog.goo.ne.jp/torisu_tetosuki/e/209ad341d3ece2b1b4df24abf619d6e4 を参考に、PMDをsbclで表示してみました。 画像はとりあえずありません。最初の速度がでない状態と、今の多少よくなった状態とのギャップが激しすぎてびっくり。 今回はじめて構…

シェーダーの組込み変数について

組込みのスペシャル変数Vertex Shader highp vec4 gl_Position; // 書込み必須 mediump float gl_PointSize; //必須ではない。 FragmentShader mediump vec4 gl_FragCoord; // read only. ピクセルの正規化座標での位置?。デプスも保持して居るし、wもつい…

CocoaでOpenGLの描画をする別の方法+シェーダー

「CocoaでOpenGLの描画をする別の方法」にシェーダー足したもの。Test.h #import <Cocoa/Cocoa.h> @interface Test : NSObject { IBOutlet NSOpenGLView *glView; unsigned int program; } @end Test.m #import "Test.h" #import <OpenGL/OpenGL.h> #import <GLUT/GLUT.h> @implementation Test -(void)awa</glut/glut.h></opengl/opengl.h></cocoa/cocoa.h>…

CocoaでOpenGLの描画をする別の方法

MacのCocoaでOpenGLを使う方法は色々あります。NSOpenGLViewをサブクラス化する、NSViewをサブクラス化する、CAOpenGLLayerを使う、GLUTにウインドウ関連をまかせる等々。 あえてここではNSOpenGLViewからコンテキストとってきて横から描いちゃう方法をやっ…

specularについて

一応その2。Directional LightのSpecular。対象物の面で反射したベクトルが、視点方向のベクトルと一致する度合いで明暗つける照明。視点方向のベクトルと、輝き度合いの係数も必要になる。Projection行列を投影変換だけに使用していれば、 原点にModelView…

diffuseについて

Directional Light、つまりglLightParameterfvなんかにGL_POSITIONで渡す配列の4番目が0.0だった場合のライティングのDiffuse。面あるいは点の位置からみた光源の方向と、面の向きあるいは点の向きとしての法線ベクトルの方向とが一致するとDiffuse色が100%…

osxでcl-opengl

sbclの場合です。http://www.cliki.net/cl-opengl に色々書いてあるのですが、http://shviller.com/cl-opengl.tar.gz を使えば動きました。cffiが必要なのでインストールしといて (require 'asdf) (require 'asdf-install) (asdf-install:install 'cffi) cl-…

gl_NormalMatrix

ES2.0での組み込みUniformの少なさで困ることが時々あります。 特にmat3型のgl_NormalMatrixは、ライティングで必要な行列です。ES1.1仕様書PDFの、es_full_spec_1.1.12の34ページに記述があり、 ページの一番したの注釈には以下のようにあります。 Here, no…

デプス値を表示するシェーダー

ES2.0の場合です。VertexShader precision highp float; uniform mat4 u_mvp; attribute vec4 a_vertex; void main() { gl_Position = u_mvp * a_vertex; } FragmentShader precision highp float; void main (void) { float depth = gl_FragCoord.z; gl_Fra…

シェーダーの行列の各要素

GLSLの行列型、mat2、mat3、mat4、matmxn への要素アクセスについてメモmat4 a_mat -> 4x4行列の場合。 a_mat[0] -> 行列の1列目部分のvec4が取れます。 a_mat[0][1] -> 行列の1列目部分のvec4の2番目のfloatが取れます。GLの行列はcolumn majorなので、 …

コピペ用シェーダーローダー

const char *vsource = [[NSString stringWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"test" ofType:@"vsh"] encoding:NSUTF8StringEncoding error:NULL] UTF8String]; const char *fsource = [[NSString stringWithContentsOfFile: [[NS…

デプスバッファを追加する

デプスバッファをレンダリングバッファに追加するコードのなくなってしまった、 今の(iPhoneSDK3.1.3)で、レンダリングバッファにデプスバッファを追加する方法です。ES1Render.h又はES2Render.hあるいは両方のクラスのメンバ変数として以下を足す。GLuint…

iPhoneのES2.0でちょっとつまずいたこと。

gl_PointSizeが未設定のまま、GL_POINTSを描画すると、実機ハングします。

PureData VanillaをMacOSX10.6でコンパイルしてみる

10.6でPureDataが一発でコンパイルできなかったので、いろいろ四苦八苦したまとめです。10.6でコンパイルする場合、そのままコンパイルすると10.6SDKでのコンパイルになると思います。他に10.5SDKが入っており、Xcodeのインストールオプション次第では10.4SD…

はじめてみました。

色々メモなどしていこうかと。