2012-05-11 24 views
1

私はココアのスクリーンセーバー、単純なopenglシーン、何も特別なものは作成していません。私はパターンを持つrgb gifの束を持っており、それらのすべてが素晴らしいものです。私は、スクリーンセーバーのプレビューに表示されるものOpenGLの色でレンダリングされたグレースケールテクスチャ

(その上にテクスチャを持つ単一のクワッドをレンダリング):

Screensaver preview

テクスチャ自体(それに応じてスケール):

enter image description here

いくつかのコード:

テキサスロード:

NSBitmapImageRep *bitmap = [NSBitmapImageRep imageRepWithData:[texImg TIFFRepresentation]]; 
if(bitmap) { 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, (GLsizei)[texImg size].width, 
       (GLsizei)[texImg size].height, 0, GL_RGB, GL_UNSIGNED_BYTE, 
       [bitmap bitmapData]) ; 

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
} 

GLの初期化:それはピクセルパック問題である可能性がありよう

glEnable(GL_TEXTURE_2D); 
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); 

答えて

2

は思えます。

テクスチャを作成する前にこの行を設定できますか? (セクション8を読んで)

http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml

http://www.opengl.org/archives/resources/features/KilgardTechniques/oglpitfall/

をしかし、基本的にはデフォルトのOpenGLでの行を期待する:あなたは、これはここで何をするかについて読むことができます

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

ピクセルを4バイトの倍数にする必要があります。これは、 1ピクセルあたり1/2/3バイト。

テクスチャを作成した後にも4(デフォルト)に戻すことをお勧めします。

+0

それは間違いありません。多くの方々、ありがとうございました。そして、リンクのおかげで、次回はもっとよく分かるでしょう=) – Stormherz

関連する問題