我有一个四边形,我想使用它产生的渐变作为另一个多边形的纹理。
glPushMatrix();
glTranslatef(250,250,0);
glBegin(GL_POLYGON);
glColor3f(255,0,0);
glVertex2f(10,0);
glVertex2f(100,0);
glVertex2f(100,100);
glVertex2f(50,50);
glVertex2f(0,100);
glEnd(); //End quadrilateral coordinates
glPopMatrix();
glBegin(GL_QUADS); //Begin quadrilateral coordinates
glVertex2f(0,0);
glColor3f(0,255,0);
glVertex2f(150,0);
glVertex2f(150,150);
glColor3f(255,0,0);
glVertex2f(0,150);
glEnd(); //End quadrilateral coordinates
我的目标是使 5 个顶点的多边形具有四边形的梯度(也许纹理不是最好的选择) 谢谢
最佳答案
保持简单!
在代码中创建渐变纹理非常简单,例如:
// gradient white -> black
GLubyte gradient[2*3] = { 255,255,255, 0,0,0 };
// WARNING: check documentation, I am not quite sure about syntax and order:
glTexture1D( GL_TEXTURE_1D, 0,3, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, gradient );
// setup texture parameters, draw your polygon etc.
图形硬件和/或 GL 将为您创建从颜色一到颜色二的漂亮渐变(请记住:这是使用硬件加速多边形绘图的基本优势之一,您不必进行插值工作在软件中)。
您的真正问题是:您在 5 顶点多边形上使用哪个纹理坐标。但这不是你的问题……;-)
关于c++ - 从多边形生成纹理 (openGL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2752006/