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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
bonbo

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

#1

投稿記事 by bonbo » 12年前

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);
のようにコードを組んでいるのですが、
このとき、特定点は描画しない、
ということはできるのでしょうか。
具体的には、長方形に丸い穴をあけたり、円同士重なったところだけを描画したり
というようなことは可能なのでしょうか。

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 12年前

ステンシルバッファを利用すれば可能だと思います。
http://sonson.jp/?p=62

bonbo

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

#3

投稿記事 by bonbo » 12年前

>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型が定義されていないなどの問題でどうしようもない

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

bonbo

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

#4

投稿記事 by bonbo » 12年前

今、glut無しでもステンシルバッファは使えるのでは?
と考えたのでもうちょっと試してみます。


閉鎖

“C言語何でも質問掲示板” へ戻る