voidconfigureShaders(osg::StateSet*stateSet){conststd::stringvertexSource="#version 130\n""\n""uniform mat4 osg_ModelViewProjectionMatrix;\n""uniform mat3 osg_NormalMatrix;\n""uniform vec3 ecLightDir;\n""\n""in vec4 osg_Vertex;\n""in vec3 osg_Normal;\n""out vec4 color;\n""\...
varying vec3 lightdir; //切线空间灯光向量; varying vec3 eyedir; //切线空间眼点向量; varying vec4 ambient, diffuse, specular; attribute vec3 tangent; //顶点切线; uniform float time; //时间更新; uniform vec3 lightPos; //灯光的位置; void main() { vec3 vVertex = vec3(gl_ModelViewMatri...
gl_TexCoord[0] = gl_MultiTexCoord0; //根据时间获取法线纹理位置; gl_TexCoord[1].x = gl_TexCoord[0].x + time * 0.05; gl_TexCoord[1].y = gl_TexCoord[0].y + time * 0.05; gl_Position =ftransform(); } fragmentShader: varying vec3 lightdir; varying vec3 eyedir; varying vec4 amb...
osg::ref_ptr<osg::LightSource> ls1 = buildLightSource(0.0, 0.0, 20.0, 0.0, 0.0, 1.0); osg::ref_ptr<osg::LightSource> ls2 = buildLightSource(0.0, 0.0, 20.0, 0.0, 0.0, -1.0); //lightRoot->addChild(ls); //lightRoot->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribu...
quad->addPrimitiveSet(new osg::DrawArrays(GL_QUADS, 0, 4)); quad->setNormalBinding(osg::Geometry::BIND_PER_PRIMITIVE_SET);//BIND_OVERALL); quad->setTexCoordArray(0, texcoords.get()); 创建一个geode节点并将geometry节点添加到geode节点并加入场景: ...
osg::ref_ptr<osg::PositionAttitudeTransform> lightPAT( new osg::PositionAttitudeTransform()); lightPAT->setPosition(osg::Vec3(5.0, 12.0, 3.0)); sgRoot->addChild(lightPAT); // Setup GL_LIGHT1. Leave GL_LIGHT0 as it is by default (enabled) ...
state->setMode(GL_LIGHT0,osg::StateAttribute::ON); state->setMode(GL_LIGHT1,osg::StateAttribute::ON); } // Represent the two light sources with a shared point. // Each light's position is 0,0,0 in object coordinates. The // two parent MatrixTransforms translate the lights, and the ...
stateset->setMode(GL_LIGHT0, osg::StateAttribute::ON); // 启用指定光源 //创建一个Light对象 osg::ref_ptr<osg::Light> light = new osg::Light(); light->setLightNum(0); //设置方向:平行光 osg::Vec3 arrayvector(0.0f, 0.0f, -1.0f); ...
GL_LIGHT0, osg::StateAttribute::OFF); pat1->getOrCreateStateSet()->setMode(GL_LIGHT1, osg::StateAttribute::OFF); return pat1.get(); } //创建自动行驶的汽车 osg::ref_ptr<osg::Node> createAutoCar(float rotatef, osg::Vec3 start,...
设置一个红色的灯光照,一般设置光照需要以下几个步骤: 指定场景模型的法线 允许光照并设置光照状态 指定光源属性并关联到场景图形 指定表面材质属性 只有几何体设置了正确的法线,才可以实现正确的光照。你需要至少允许一个光源,OSG最多支持八个光源,从GL_LIGHT0到GL_LIGHT7 aaa...OSG...