究竟如何提供纹理坐标并绑定GLUTess多边形的纹理? 谢谢纹理和纹理映射GLUTess多边形?
0
A
回答
1
我不知道如果我正确地让你失望。纹理在redbook中有很好的描述。 他们在书中使用GLUT,所以你应该在例子中找到答案。
简而言之:在调用glVertex(如果不使用VBO)之前调用glTexCoord2f(u,v),其中u,v是纹理坐标。
HTH
编辑: 对不起,现在我才明白这个问题。
我从来没有使用tesselators,但也许我可以帮:-)
Tesselators只能找到要在其中创建新的顶点点。标准glVertex用于将它们发送到GPU。
您可以使用自己的函数绘制顶点。如果你注册回调
gluTessCallback(tobj, GLU_TESS_VERTEX, (GLvoid (*)()) &vertexCallback);
然后你的函数在每次创建新顶点时被调用。您还可以使用
gluTessCallback(tobj, GLU_TESS_COMBINE, (GLvoid (*)()) &combineCallback);
向顶点添加一些信息 - 如法线,颜色,tex坐标。
见redbook - chapter11例如11-2
/* a different portion of init() */
gluTessCallback(tobj, GLU_TESS_VERTEX,
(GLvoid (*)()) &vertexCallback);
gluTessCallback(tobj, GLU_TESS_BEGIN,
(GLvoid (*)()) &beginCallback);
gluTessCallback(tobj, GLU_TESS_END,
(GLvoid (*)()) &endCallback);
gluTessCallback(tobj, GLU_TESS_ERROR,
(GLvoid (*)()) &errorCallback);
gluTessCallback(tobj, GLU_TESS_COMBINE,
(GLvoid (*)()) &combineCallback);
/* new callback routines registered by these calls */
void vertexCallback(GLvoid *vertex)
{
const GLdouble *pointer;
pointer = (GLdouble *) vertex;
glColor3dv(pointer+3);
glVertex3dv(vertex);
}
void combineCallback(GLdouble coords[3],
GLdouble *vertex_data[4],
GLfloat weight[4], GLdouble **dataOut)
{
GLdouble *vertex;
int i;
vertex = (GLdouble *) malloc(6 * sizeof(GLdouble));
vertex[0] = coords[0];
vertex[1] = coords[1];
vertex[2] = coords[2];
for (i = 3; i < 7; i++)
vertex[i] = weight[0] * vertex_data[0][i]
+ weight[1] * vertex_data[1][i]
+ weight[2] * vertex_data[2][i]
+ weight[3] * vertex_data[3][i];
*dataOut = vertex;
}
这应足以为通常结合质感 - 与tesselators绘制之前做到这一点。
HTH
0
的镶嵌应该插值纹理坐标根据它来源于顶点。另一种方法是使用自动纹理坐标生成,如果它适用于这种情况。
相关问题
- 1. 纹理映射?
- 2. OpenGL多边形渲染模式和纹理映射
- 3. OpenGL纹理四边形和无纹理四边形
- 4. 纹理加载和映射
- 5. Pretransformed纹理多边形
- 6. OpenGL纹理映射
- 7. OpenGL纹理映射
- 8. 纹理映射圆
- 9. 3D纹理映射
- 10. 如何混合纹理和非纹理多边形?
- 11. 简单的多边形纹理映射/ iOS/cocos2d
- 12. 圆柱形纹理映射的OpenGL
- 13. 映射正方形上的纹理(Android)
- 14. 三角形纹理映射OpenGL
- 15. 映射六角形上的纹理
- 16. 绘制纹理映射的矩形
- 17. OpenGL纹理映射禁用底纹
- 18. 绘制多边形形状的纹理
- 19. openGL纹理映射-c
- 20. SpriteKit局部纹理映射
- 21. 纹理映射 - 坐标
- 22. GLSL 4.10纹理映射
- 23. 纹理映射与three.js
- 24. openGL的纹理映射
- 25. LWJGL混淆纹理映射
- 26. OpenGL纹理映射问题
- 27. OpenGL纹理映射错误
- 28. Directx 11纹理映射
- 29. Direct3D C++纹理映射
- 30. 纹理映射的NGON?
但是,当你使用GLUTess你不能在每个顶点之前打电话,因此我的问题 – jmasterx 2010-05-23 22:01:51