ページ 11

特定ピクセルをのぞいた部分だけを描画したい

Posted: 2013年12月25日(水) 19:37
by bonbo
OpenGLを用いた描画で例えば
長方形を描画するときは

コード:

const GLfloat squareVertices[] = {
        x0,	y0,
        x1,	y1,
        x3,	y3,
        x2,	y2,
        
    };
	
    const GLubyte squareColors[] = {
        static_cast<GLubyte>(red), static_cast<GLubyte>(green), static_cast<GLubyte>(blue) ,static_cast<GLubyte>(alpha),
        static_cast<GLubyte>(red), static_cast<GLubyte>(green), static_cast<GLubyte>(blue) ,static_cast<GLubyte>(alpha),
		static_cast<GLubyte>(red), static_cast<GLubyte>(green), static_cast<GLubyte>(blue) ,static_cast<GLubyte>(alpha),
		static_cast<GLubyte>(red), static_cast<GLubyte>(green), static_cast<GLubyte>(blue) ,static_cast<GLubyte>(alpha),
    };
	
	glVertexPointer(2, GL_FLOAT, 0, squareVertices);
    glEnableClientState(GL_VERTEX_ARRAY);
    glColorPointer(4, GL_UNSIGNED_BYTE, 0, squareColors);
    glEnableClientState(GL_COLOR_ARRAY);
    
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
のようにコードを組んでいるのですが、
このとき、特定点は描画しない、
ということはできるのでしょうか。
具体的には、長方形に丸い穴をあけたり、円同士重なったところだけを描画したり
というようなことは可能なのでしょうか。

何かヒントをいただければ嬉しいです。
よろしくお願いします。

Re: 特定ピクセルをのぞいた部分だけを描画したい

Posted: 2013年12月25日(水) 20:10
by h2so5
ステンシルバッファを利用すれば可能だと思います。
http://sonson.jp/?p=62

Re: 特定ピクセルをのぞいた部分だけを描画したい

Posted: 2013年12月27日(金) 08:45
by bonbo
>h2so5さん
ありがとうございます。
使っている環境がOpenGLではなく、OpenGL ESだということを最初にいうのを忘れていました。本当に申し訳ないです。
どうやらGLUTはESのほうでは動かないようで、GLUT ESというのを組み込んでやってみようと思い
http://sourceforge.net/projects/glutes/
ここからglutes 1.11をダウンロード、
中のIncのglutes.hをインクルード
のようにしたのですが、そもそもの<GLES/gl.h>や、<GLES/egl.h>が存在しないので
<OpenGLES/ES1/gl.h>
そもそも存在しないものに関してはソースをコピーし、
"egl.h"
"egltypes.h"
のように無理やり変えてやってみても
結局GLAPI型が定義されていないなどの問題でどうしようもない

というように、にっちもさっちもいかない状況になってしまったのですが、なにかやり方に問題が
あるのでしょうか。(無理やりコードを作るという時点で大問題だとは思うのですが)

Re: 特定ピクセルをのぞいた部分だけを描画したい

Posted: 2013年12月27日(金) 09:01
by bonbo
今、glut無しでもステンシルバッファは使えるのでは?
と考えたのでもうちょっと試してみます。

Re: 特定ピクセルをのぞいた部分だけを描画したい

Posted: 2014年1月07日(火) 19:56
by bonbo