Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
Leviosa
0 / 0 / 1
Регистрация: 24.04.2016
Сообщений: 29
#1

Наложение текстуры на цилиндр и тор - OpenGL

18.09.2017, 19:55. Просмотров 287. Ответов 5
Метки нет (Все метки)

Добрый вечер!
Есть задача. Необходимо, чтобы на цилиндр и тор по нажатию клавиши накладывались текстуры.
Вот код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <windows.h>
#include <freeglut.h>
#include <glut.h>
#include <GL/glaux.h>
#include"Constatnts.h"
 
AUX_RGBImageRec* photo_image;
GLuint texture;
 
static void resize(int width, int height)
{
    const float ar = (float)width / (float)height;
 
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
 
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
 
static void display(void)
{
 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3d(1, 1, 0);
 
    glPushMatrix();
    glTranslated(-1.4, -1.4, -10);
    glRotated(65, 1.0, 0.0, 0.0);
    glutSolidCylinder(1, 2.5, 16, 16);
    glPopMatrix();
 
    glPushMatrix();
    glTranslated(-2.0, 2.0, -8);
    glRotated(65, 1.0, 0.0, 0.0);
    glutSolidTorus(0.1, 0.5, 16, 16);
    glPopMatrix();
 
    glutSwapBuffers();
}
 
void keyboard(unsigned char key, int x, int y)
{
    switch (key) {
    case 27: /* escape */
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                
                glEnable(GL_TEXTURE_2D);
        glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
        glBindTexture(GL_TEXTURE_2D, texture);
        
        glPushMatrix();
        glTranslated(-1.4, -1.4, -10);
        glRotated(65, 1.0, 0.0, 0.0);
        glScalef(2.0, 2.0, 2.0);
        glutSolidCylinder( 1, 2.5, 16, 16);
        glPopMatrix();
 
        glPushMatrix();
        glTranslated(-2.0, 2.0, -8);
        glRotated(65, 1.0, 0.0, 1.0);
        glScalef(1.0, 1.0, 1.0);
        glutSolidTorus(0.1, 0.5, 16, 16);
        glPopMatrix();
 
        glutSwapBuffers();
        break;
    }
    glFlush();
    glDisable(GL_TEXTURE_2D);
}
 
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
 
    glutInitWindowSize(640, 640);
    glutInitWindowPosition(10, 10);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
 
    glutCreateWindow("Graph1");
 
    glutReshapeFunc(resize);
    glutDisplayFunc(display);
 
    glClearColor(1, 1, 1, 1);
    glEnable(GL_CULL_FACE);
    glCullFace(GL_BACK);
 
        photo_image = auxDIBImageLoad(L"texture1.bmp");
    
    glGenTextures(1, &texture);
    glBindTexture(GL_TEXTURE_2D, texture);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
 
    glTexImage2D(GL_TEXTURE_2D, 0, 3,
        photo_image->sizeX,
        photo_image->sizeY,
        0, GL_RGB, GL_UNSIGNED_BYTE,
        photo_image->data); glutKeyboardFunc(keyboard);
 
    glutMainLoop();
    
    return EXIT_SUCCESS;
}
Однако при нажатии Esc ничего не происходит. Тор и цилиндр остаются своего цвета. Как это исправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2017, 19:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Наложение текстуры на цилиндр и тор (OpenGL):

Наложение текстуры
Здравствуйте, как наложить текстуру на пятиугольник?

Наложение текстуры
Здравствуйте, подскажите пожалуйста почему при наложении текстуры выдается...

Наложение текстуры
Добрый день! Пытаюсь наложить текстуру. Прочитать получается, а наложить не...

Автоматическое наложение текстуры
Я налаживаю текстуру вот так: AUX_RGBImageRec *texture1; texture1 =...

Наложение текстуры в OpenGl
У меня возникла проблема на 6 уроке народного учебника по OpenGl (английская ...

Наложение текстуры на прямоугольник
Привет. Пытаюсь наложить текстуру на обычный прямоугольник. Что делаю не...

5
vxg
Модератор
3230 / 2033 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
18.09.2017, 20:38 #2
Leviosa, а если вы их накладываете с рождения они накладываются?
0
Leviosa
0 / 0 / 1
Регистрация: 24.04.2016
Сообщений: 29
18.09.2017, 20:49  [ТС] #3
vxg, Нет
0
vxg
Модератор
3230 / 2033 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
18.09.2017, 20:54 #4
Leviosa, надо глянуть под отладчиком корректно ли загружается изображение - может картину просто не может найти. А вообще - уйти от AUX на что-то другое например как тут http://www.cyberforum.ru/opengl/thread797337.html
0
Leviosa
0 / 0 / 1
Регистрация: 24.04.2016
Сообщений: 29
18.09.2017, 21:00  [ТС] #5
Да, вы оказались правы: проблема была в файле с текстурой.
А чем плох glaux?
0
Antikl
с++
274 / 270 / 147
Регистрация: 15.07.2015
Сообщений: 1,478
Завершенные тесты: 6
18.09.2017, 23:23 #6
Цитата Сообщение от Leviosa Посмотреть сообщение
А чем плох glaux?
устарел, не безопасен
0
18.09.2017, 23:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2017, 23:23
Привет! Вот еще темы с решениями:

Наложение текстуры на сферу
Привет. Подскажите, как правильно наложить текстуру на сферу? Имею такой...

Наложение текстуры opengl
Программирую в Dev cpp. Никак не могу найти код наложения текстур, который...

Наложение текстуры. OpenGL ES 2
В общем занесло меня в очередной раз в область, связанную с OpenglES....

OpenSceneGraph, наложение текстуры
Хочу наложить текстуру на примитив, но файл никак не находится, хотя путь к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru