Как точно обеспечить координаты текстуры и привязать текстуру к полигону GLUTess? ThanksКартирование текстур и текстур ГЛУБИНЫ Полигоны?
ответ
Я не знаю Если я вас правильно пойму. Текстурирование хорошо описано в redbook. Они используют GLUT в книге, поэтому вы должны найти ответ в примерах.
Вкратце: вызов glTexCoord2f (u, v) перед вызовом glVertex (если вы не используете VBO), где u, v - координаты текстуры.
НТН
EDIT: К сожалению, сейчас я понимаю вопрос.
Я никогда не использовал tesselators, но, может быть, я могу помочь :-)
Tesselators только найти точки, где должны быть созданы новые вершины. Стандартный glVertex используется для отправки их на GPU.
Вы можете использовать свою функцию для рисования вершин. Если вы регистрируете обратный вызов с
, то ваша функция вызывается каждый раз, когда создается новая вершина. Вы также можете использовать
gluTessCallback(tobj, GLU_TESS_COMBINE, (GLvoid (*)()) &combineCallback);
Чтобы добавить информацию к вершинам - как нормали, цвета, текс-координаты.
См 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.
НТН
тесселятор должны интерполировать координаты текстуры на основе вершин она была составлена из. Другим методом было бы использование автоматической генерации текстурных координат, если это работает для ситуации.
- 1. Картирование текстур в LWJGL
- 2. Автоматическое картирование текстур орфографических изображений
- 3. Режим рендеринга OpenGL Polygon и картирование текстур
- 4. Картирование текстур не работает правильно, используя OpenGL
- 5. Картирование 3D-текстур в Foundry Nuke
- 6. Объединение PBO и текстур?
- 7. Масштабирование текстур
- 8. Фильтрация текстур
- 9. Rendering глюк с GL_DEPTH_TEST и прозрачных текстур
- 10. Blending прозрачных текстур с глубиной
- 11. three.js - клонирование текстур и onLoad
- 12. Смешивание и перевод текстур OpenGL
- 13. XNA Массивы и рисование текстур?
- 14. Преобразование и рисование изометрических текстур
- 15. Как создать изображения картирования текстур?
- 16. Загрузка текстур DDS?
- 17. Утилизация текстур в приложении
- 18. Тканые (повторяющиеся) области текстур?
- 19. GLKit смесь двух текстур
- 20. Преобразования текстур OpenGL
- 21. Загрузка текстур в three.js
- 22. Толщина OpenGL 2D-текстур
- 23. Сила двух текстур
- 24. Рендеринг текстур в pyopengl
- 25. OpenGL: отключить цвета текстур?
- 26. Связывание текстур с GL_TRIANGLES
- 27. Оптимизированное представление OpenGL текстур
- 28. Directx 11 Отображение текстур
- 29. Ошибка пиксельной фильтрации текстур
- 30. glCompressedTexImage2D для прямоугольных текстур
Но когда вы используете GLUTess, вы не можете делать вызовы перед каждой вершиной, следовательно, моя проблема – jmasterx