• 知道了为什么osg::impostor可以这样设置geometry的QUADS了


    之前一直不理解为什么osg::impostor里面的impostorSprite可以直接设置impostorSprite->getCoords()来设置geometry的四个边角,其实是因为这个函数

    void ImpostorSprite::drawImplementation(osg::RenderInfo& renderInfo) const,它重写了geometry的这个函数,里面直接设置了

    void ImpostorSprite::drawImplementation(osg::RenderInfo& renderInfo) const
    {
    	osg::GLBeginEndAdapter& gl = (renderInfo.getState()->getGLBeginEndAdapter());
    
    	// when the tex env is set to REPLACE, and the
    	// texture is set up correctly the color has no effect.
    	gl.Color4fv(_color.ptr());
    
    	gl.Begin(GL_QUADS);
    
    	gl.TexCoord2fv((GLfloat *)&_texcoords[0]);
    	gl.Vertex3fv((GLfloat *)&_coords[0]);
    
    	gl.TexCoord2fv((GLfloat *)&_texcoords[1]);
    	gl.Vertex3fv((GLfloat *)&_coords[1]);
    
    	gl.TexCoord2fv((GLfloat *)&_texcoords[2]);
    	gl.Vertex3fv((GLfloat *)&_coords[2]);
    
    	gl.TexCoord2fv((GLfloat *)&_texcoords[3]);
    	gl.Vertex3fv((GLfloat *)&_coords[3]);
    
    	gl.End();
    }
    

      所以可以impostorSprite->getCoords()直接设置,作用到了其成员变量,而不是通过addDrawArrays(new .....)这样来设置geometry的四个边角

  • 相关阅读:
    新机自动创建yum库
    一段自动添加证书命令
    一段托盘程序
    date
    1234567890 转换成 1,234,567,890
    删除localStorage数组中其中一个元素(根据元素中的属性key)
    xcode6 ios launchimage
    画分割线
    裁剪和打水印
    UITextView添加一个placeholder功能
  • 原文地址:https://www.cnblogs.com/tangmiao/p/7810579.html
Copyright © 2020-2023  润新知