想要将多个不规则纹理贴花到曲面上(使用xyz顶点和每个指定的uv的网格)。我正在从模型文件中加载网格物体,并且没有任何关于表面的先验知识...我们所知道的是它将具有合理的" uv映射。想要选择几个紫外区域并对它们应用纹理。每个区域由uv坐标中的边界多边形指定。在这种情况下,不知道等效的xyz poly,或者我认为答案很简单。
我们将此工作用于平面和简单的圆柱面(我们将其近似为一系列扁平条纹,通过选择法线作为平均值进行平滑处理)。在这两种情况下,我们都知道从uv到xyz的唯一映射,因此我们设置模板缓冲区,通过在绑定纹理和绘制真实曲面之前将等效的xyz poly绘制到模板缓冲区来限制绘制到所需的uv区域。
我们还在纹理中将rgba透明度用于表面上。通常,每个纹理区域都是一个小的旋转矩形,因此我们将四个顶点绘制到模板缓冲区,然后使用纹理矩阵旋转它,并使用纹理内的rgba透明度来确保仅应用纹理的右侧部分。一切都很好。
想重用我们的工作代码,但现在将这些纹理应用于任意曲面/网格。我们正在加载和绘制这些模型,并且已经可以将纹理应用于整个面[即uv从(0,0)到(1,1)]。现在我们想要扩展它并应用"放置"纹理到每个表面的区域。
认为有可能直接将uv poly绘制到模板缓冲区,甚至不知道等效的xyz poly ...然后所有现有代码都可以工作。也许可以像帧缓冲对象那样使用一些技巧,然后将模板多边形初始绘制到那个,然后在"真实"中使用它作为模板。绘制曲面网格。这会是一个好方法吗?或者有更好的方法吗?
任何有关样品的建议或网址链接欢迎...... PS看了这些线程......我认为有点但不完全相同的问题......
Binding a stencil render buffer to a frame buffer in opengl
Visualizing the Stencil Buffer to a texture
我目前正在研究一些有用于屏幕外阴影贴图的FBO设置/使用代码,并尝试使其适用于这种看似简单的情况。我不清楚的是需要设置gl调用...我对如何设置它感到困惑。这是硬件阴影FBO设置的摘录,其中的位被切掉并且??补充......这里对正确序列的任何帮助表示赞赏。
glBindTexture(GL_TEXTURE_2D, tex);
?? not
::glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32, shadowsize, shadowsize, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
?? but a more normal binding approp to drawing RGBA textures
::glBindTexture(GL_TEXTURE_2D, 0);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_Framebuffer);
// Attach everything, tell fbo there will be a drawbuffer, unlike shadows tex draw
// ?? use GL_COLOR_ATTACHMENT0_EXT
glDrawBuffer(GL_NONE);
// no color buffer dest...
??wrong glReadBuffer(GL_NONE);
// no color buffer src
?? glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, tex, 0);
//??
注意:tex
,m_Frambuffer
为ints
,正确分配了textureid和framebuffer,认为该位正常。我的主要困惑是