从绘制的顶点和顶点获取(X,Y)像素颜色OPENGL中的颜色数组

时间:2013-08-30 22:11:49

标签: object opengl pixel alpha vertex

我想在OpenGL中获得像素颜色或绘制对象。例如,如果我在上下文中绘制一个圆,它将被保存并在对象类中绘制。它将具有宽度和高度。如果我点击圆圈,它应该返回颜色。但是......如果我点击对象的角落,它应该返回alpha 0让我知道我已经点击了圆形对象,但是在对象的透明区域。我是否需要绘制像素缓冲区对象?

enter image description here

 void Circle::Display()
 {

      glMatrixMode(GL_MODELVIEW);
      glPushMatrix();

      glEnable(GL_BLEND);
      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
      glEnableClientState(GL_VERTEX_ARRAY);
      glEnableClientState(GL_COLOR_ARRAY);

      glVertexPointer(2, GL_FLOAT, 0, circle_vectors);
      glColorPointer(4, GL_FLOAT, 0, circle_colors);

      glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

      glDisableClientState(GL_VERTEX_ARRAY);
      glDisableClientState(GL_COLOR_ARRAY); // enables the color-array.
      glDisable(GL_BLEND);

      glPopMatrix();
 }


 bool Circle::IsTransparent(int x, int y)
 {
      //We clicked on the circle object. Is the pixel transparent?
 }

1 个答案:

答案 0 :(得分:1)

我会首先将一般形式用于任何简单的几何形状。圆形,正方形,三角形等...你可以通过一些简单的数学找到一个点是否在所有这些范围内。因此,如果可能的话,继承您的Shape类以加快对简单形状的测试。

对于任意形状或具有异常变换特征的形状,可能需要进行像素回读或遮挡查询。