知道了为什么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的四个边角

转载于:https://www.cnblogs.com/tangmiao/p/7810579.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值