zoukankan      html  css  js  c++  java
  • 知道了为什么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的四个边角

  • 相关阅读:
    Go 学习之旅
    IdentityServer4 3.1.x 迁移到 4.x
    Redash 二开
    frp 内网穿透远程桌面(Windows 10)配置
    Redash 二开
    Redash 二开
    Nginx 强制 HTTPS 配置
    ASP.NET Core 奇淫技巧之SPA部署
    .NET Core 对接微信小程序数据解密
    19c生产enq: FB
  • 原文地址:https://www.cnblogs.com/tangmiao/p/7810579.html
Copyright © 2011-2022 走看看