在此,先修改下osgfbo(五)中紋理坐標(biāo)的表示方法,不是說osgfbo(五)中的做法不對(duì),而是我更愿意明確的把紋理坐標(biāo)數(shù)組賦值到(0,1)之間。即
1,設(shè)置紋理坐標(biāo)
osg::ref_ptrosg::Vec2Array texCoord = new osg::Vec2Array;
texCoord->push_back(osg::Vec2(0.0, 0.0));
texCoord->push_back(osg::Vec2(1.0, 0.0));
texCoord->push_back(osg::Vec2(1.0, 1.0));
texCoord->push_back(osg::Vec2(0.0, 1.0));
2,將紋理坐標(biāo)按照以前傳遞shader數(shù)組的方式,傳遞到shader(注意,序號(hào)不能為0,這里設(shè)置為1)
geom->setVertexAttribArray(1, texCoord, osg::Array::BIND_PER_VERTEX);
//geom->setTexCoordArray(0, texCoord);
3,在shader之前傳遞紋理坐標(biāo)變量(這里也設(shè)置為1)
program1->addBindAttribLocation("texCoord", 1);
4,在shader中,頂點(diǎn)shader改為
static const char * vertexShader =
{
“in vec2 texCoord;\n”
“varying vec2 outTexCoord;”
“void main(void)\n”
“{\n”
“outTexCoord = texCoord;\n”
" gl_Position = ftransform();\n"
“}\n”
};
5,傳遞給片元著色器
static const char *psShader =
{
“varying vec2 outTexCoord;”
“uniform sampler2D tex0;”
“void main(void)\n”
“{\n”
“gl_FragColor = texture2D(tex0,outTexCoord);”文章來源:http://www.zghlxwxcb.cn/news/detail-405223.html
"}"
"}\n"
};文章來源地址http://www.zghlxwxcb.cn/news/detail-405223.html
到了這里,關(guān)于osgfbo(七)紋理坐標(biāo)的另一種表示方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!