0
点赞
收藏
分享

微信扫一扫

openGL之API学习(二一一)glColor遇上纹理

心如止水_c736 2022-02-27 阅读 62

每一个像素点的颜色与glColor进行比较,最终取较小值

原图

glColor4f(1.0,0.0,0.0,1.0)时

glColor4f(0.0,0.0,0.0,1.0)时,

 

glColor4f(0.0,0.0,0.0,0.0);

renderInfor.getState()->setActiveTextureUnit(1);
static GLuint disp_tex_id=0;
if(disp_tex_id<=0){
    glGenTextures(1, &disp_tex_id);
}


glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, disp_tex_id);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);


osg::ref_ptr<osg::Image> img = new osg::Image;
img=osgDB::readImageFile("D:\\OSG_OAGEARTH_x86\\data\\road.png");
osg::ref_ptr<osg::Texture2D> tex1 = new osg::Texture2D(img);
unsigned char* dataPtr = (unsigned char*)img->data();
glTexImage2D( GL_TEXTURE_2D, 0, img->getInternalTextureFormat(),
              img->s(), img->t(), tex1->getBorderWidth(),
              (GLenum)img->getPixelFormat(),
              (GLenum)img->getDataType(),
              dataPtr);


GLfloat vVertices[] =
{
    -5.0f,0.0f,-5.0f,
    5.0f,0.0f,-5.0f,
    5.0f,0.0f,5.0f,
    -5.0f,0.0f,5.0f
};



GLfloat vTex[] = {
    0.0f, 0.0f,
    0.0f, 1.0f,
    1.0f, 1.0f,
    1.0f, 0.0f,
};

glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0,vVertices);



state->setClientActiveTextureUnit(1);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0,vTex);


glDrawArrays(GL_QUADS, 0, 4);

举报

相关推荐

0 条评论