Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/33: Рейтинг темы: голосов - 33, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 6
1

Как наложить разные текстуры на разные грани одного и того же куба?

04.04.2010, 01:43. Просмотров 6920. Ответов 15
Метки нет (Все метки)


ЗДРАВСТВУЙТЕ! Подскажите пожалуйста как наложить разные текстуры на разные грани одного и тогоже куба?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2010, 01:43
Ответы с готовыми решениями:

Разные браузеры отдают разные html одного и того же сайта? по какому параметру это определяется?
К примеру сайт 1800contacts.com. В мозилле одна версия html, в chrome другая. Не могу понять....

Разные хеш-суммы после компиляции одного и того же проекта
Друзья! Подскажите, пожалуйста, почему один и тот же проект Qt компилируется по-разному? То есть у...

Почему разные адреса одного и того же элемента динамического массива?
Я создаю динамический массив и отправляю его в функцию, если потом сравнивать адреса элементов...

Связанная таблица может иметь разные названия одного и того же поля
БД access связывается с таблицей в формате .xlsx через запрос из этой таблицы берется поле ...

15
2459 / 1272 / 212
Регистрация: 26.02.2009
Сообщений: 5,402
Записей в блоге: 5
06.04.2010, 16:33 2
при загрузке текстур используйте glBindTexture.
При прорисовке, перед каждой гранью вызываете её с нужным индексом текстуры
0
0 / 0 / 0
Регистрация: 12.01.2010
Сообщений: 6
07.04.2010, 22:53  [ТС] 3
glBindTexture - это наверное OpenGL. Мне бы что-нибудь из DirectX.
0
62 / 61 / 6
Регистрация: 02.09.2008
Сообщений: 181
08.04.2010, 12:44 4
Я использовал для этого 3DМах. В нем есть возможность сделать развертку (автоматическую или управляемую тобой). Если брать ящик то что-то типа этого. Затем из этих разверток делается картинка в в формате ну например JPG. В любом графическом редакторе ее разрисовываем. И в 3DМах ты получиш почти реальный ящик (или любой другой объект). Дальше экспотритуеш ну например в .Х файл. И в свою программку загружаеш. В интернете я находил много туториалов как это делать подробно. Правда в основном на форумах игроделов. Если есть еще способ это как то сделать по другому, мне тоже будет интересно. Но думаю если он и есть, то вручную накладывать текстуры на каждую грань (кроме отдельных треугольников или кубиков ) малоэфективно (разве что в целях обучения). Слышал что есть еще плагины к 3DМах, с помощью которых можно раскрашивать обьекти примерно как из пулвера или кисточкой как тебе нужно.
0
62 / 61 / 6
Регистрация: 02.09.2008
Сообщений: 181
13.04.2010, 15:06 5
В одну картинку заложил 2 текстуры (пол картинки - одна текстура и пол картинки другая). Текстурировал куб, на верхней грани вывел другую половинку картинки. Кому интересно, во вложениях Release и Texrura_popolam.rar (исходник).
0
Вложения
Тип файла: rar Release.rar (191.6 Кб, 157 просмотров)
Тип файла: rar Texrura_popolam.rar (172.3 Кб, 154 просмотров)
6 / 6 / 0
Регистрация: 24.04.2010
Сообщений: 13
25.04.2010, 08:43 6
Если нужно использовать разные текстуры, находящиеся в разных файлах, то: Разбей куб на меши (6 граней = 6 мешей). И назначь каждому мешу свою текстуру.
0
Комбинатор
979 / 248 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
17.05.2010, 20:43 7
Знаю что тема старенькая(но за то актуальная ), но возможно кому-то понадобиться реализация на С++ OpenGL(студия 2008).
Листинг

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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
//исправлена работа с буффером
#include <windows.h>
#include <iostream>
#include <dos.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h>
#include <gl/glaux.h>
#include <math.h>
 
#include <string>
#include <sstream>
#include <assert.h>
 
#define     pi      3.141592535
#define     e       2.718281828
 
 
static HGLRC hRC;       // Постоянный контекст рендеринга
static HDC hDC;         // Приватный контекст устройства GDI
GLuint  texture[6];     // Место для одной текстуры
 
GLvoid LoadGLTextures(){
    // Загрузка картинки
    AUX_RGBImageRec *texture1, *texture2, *texture3, *texture4, *texture5, *texture6;
    texture1 = auxDIBImageLoad("1.bmp");//#1
    texture2 = auxDIBImageLoad("2.bmp");//#2
    texture3 = auxDIBImageLoad("3.bmp");//#3
    texture4 = auxDIBImageLoad("4.bmp");//#4
    texture5 = auxDIBImageLoad("5.bmp");//#5
    texture6 = auxDIBImageLoad("6.bmp");//#6
        // Создание текстуры #1
    glGenTextures(1, &texture[0]);
    glBindTexture(GL_TEXTURE_2D, texture[0]);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
        // Создание текстуры #2
    glGenTextures(1, &texture[1]);
    glBindTexture(GL_TEXTURE_2D, texture[1]);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture2->sizeX, texture2->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture2->data);
        // Создание текстуры #3
    glGenTextures(1, &texture[2]);
    glBindTexture(GL_TEXTURE_2D, texture[2]);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture3->sizeX, texture3->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture3->data);
        // Создание текстуры #4
    glGenTextures(1, &texture[3]);
    glBindTexture(GL_TEXTURE_2D, texture[3]);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture4->sizeX, texture4->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture4->data);
        // Создание текстуры #5
    glGenTextures(1, &texture[4]);
    glBindTexture(GL_TEXTURE_2D, texture[4]);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture5->sizeX, texture5->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture5->data);
        // Создание текстуры #6
    glGenTextures(1, &texture[5]);
    glBindTexture(GL_TEXTURE_2D, texture[5]);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture6->sizeX, texture6->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture6->data);
}
 
//---CLASS MAP-----------------------------------------------------------------
class map{
    GLdouble pos[16];
 
public:
    map();
    void scene();
    void see();
    void quadro();
};
map::map(){
    pos[0] = 30.0f;
    pos[1] = 0.0f;
    pos[2] = 0.0f;
 
    pos[3] = 0.0f;
    pos[4] = 30.0f;
    pos[5] = 0.0f;
 
    pos[6] = -30.0f;
    pos[7] = 0.0f;
    pos[8] = 0.0f;
 
    pos[9] = 0.0f;
    pos[10] = -30.0f;
    pos[11] = 0.0f;
 
    pos[12] = 0.0f;
    pos[13] = 0.0f;
    pos[14] = 60.0f;
}
void map::scene(){
    glBegin(GL_LINES);
        glColor3f(1.0f, 0.0f, 0.0f);
            glVertex3d(-400.0f, 0.0f, 0.0f);
        glColor3f(0.1f, 0.1f, 0.1f);
            glVertex3d( 400.0f, 0.0f, 0.0f);
 
        glColor3f(0.0f, 1.0f, 0.0f);
            glVertex3d(0.0f, -300.0f, 0.0f);
        glColor3f(0.1f, 0.1f, 0.1f);
            glVertex3d(0.0f, 300.0f,  0.0f);
 
        glColor3f(0.0f, 0.0f, 1.0f);
            glVertex3d(0.0f, 0.0f, -200.0f);
        glColor3f(0.1f, 0.1f, 0.1f);
            glVertex3d(0.0f, 0.0f, 200.0f);
    glEnd();
}
void map::see(){
    glBindTexture(GL_TEXTURE_2D, texture[0]);
    glBegin(GL_LINES);
        glColor3f(1.0f, 1.0f, 1.0f);
            glVertex3d(pos[0], pos[1], pos[2]);
            glVertex3d(pos[3], pos[4], pos[5]);
 
            glVertex3d(pos[3], pos[4], pos[5]);
            glVertex3d(pos[6], pos[7], pos[8]);
 
            glVertex3d(pos[6], pos[7], pos[8]);
            glVertex3d(pos[9], pos[10], pos[11]);
 
            glVertex3d(pos[9], pos[10], pos[11]);
            glVertex3d(pos[0], pos[1], pos[2]);
            
                glTexCoord3f(pos[12], pos[13], pos[14]); 
            glVertex3d(pos[12], pos[13], pos[14]);
            glVertex3d(pos[0], pos[1], pos[2]);
 
            glVertex3d(pos[12], pos[13], pos[14]);
            glVertex3d(pos[3], pos[4], pos[5]);
 
            glVertex3d(pos[12], pos[13], pos[14]);
            glVertex3d(pos[6], pos[7], pos[8]);
            
            glVertex3d(pos[12], pos[13], pos[14]);
            glVertex3d(pos[9], pos[10], pos[11]);
    glEnd();
}
void map::quadro(){
    glBindTexture(GL_TEXTURE_2D, texture[0]);
    glBegin(GL_QUADS);// Передняя грань
        glColor3f(1.0f, 1.0f, 1.0f);
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0f, -100.0f,  100.0f);    // Низ лево
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 100.0f, -100.0f,  100.0f);    // Низ право
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 100.0f,  100.0f,  100.0f);    // Верх право
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-100.0f,  100.0f,  100.0f);    // Верх лево
    glEnd();
 
    glBindTexture(GL_TEXTURE_2D, texture[1]);
    glBegin(GL_QUADS);// Задняя грань
        glColor3f(1.0f, 1.0f, 1.0f);
        glTexCoord2f(1.0f, 0.0f); glVertex3f(-100.0f, -100.0f, -100.0f);    // Низ право
        glTexCoord2f(1.0f, 1.0f); glVertex3f(-100.0f,  100.0f, -100.0f);    // Верх право
        glTexCoord2f(0.0f, 1.0f); glVertex3f( 100.0f,  100.0f, -100.0f);    // Верх лево
        glTexCoord2f(0.0f, 0.0f); glVertex3f( 100.0f, -100.0f, -100.0f);    // Низ лево
    glEnd();
    
    
    glBindTexture(GL_TEXTURE_2D, texture[2]);
    glBegin(GL_QUADS);                      // Верхняя грань
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-100.0f,  100.0f, -100.0f);    // Верх лево
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0f,  100.0f,  100.0f);    // Низ лево
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 100.0f,  100.0f,  100.0f);    // Низ право
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 100.0f,  100.0f, -100.0f);    // Верх право
    glEnd();
            
    glBindTexture(GL_TEXTURE_2D, texture[3]);
    glBegin(GL_QUADS);                      // Нижняя грань
        glTexCoord2f(1.0f, 1.0f); glVertex3f(-100.0f, -100.0f, -100.0f);    // Верх право
        glTexCoord2f(0.0f, 1.0f); glVertex3f( 100.0f, -100.0f, -100.0f);    // Верх лево
        glTexCoord2f(0.0f, 0.0f); glVertex3f( 100.0f, -100.0f,  100.0f);    // Низ лево
        glTexCoord2f(1.0f, 0.0f); glVertex3f(-100.0f, -100.0f,  100.0f);    // Низ право
    glEnd();
 
    glBindTexture(GL_TEXTURE_2D, texture[4]);
    glBegin(GL_QUADS);          // Правая грань
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 100.0f, -100.0f, -100.0f);    // Низ право
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 100.0f,  100.0f, -100.0f);    // Верх право
        glTexCoord2f(0.0f, 1.0f); glVertex3f( 100.0f,  100.0f,  100.0f);    // Верх лево
        glTexCoord2f(0.0f, 0.0f); glVertex3f( 100.0f, -100.0f,  100.0f);    // Низ лево
    glEnd();
 
    glBindTexture(GL_TEXTURE_2D, texture[5]);
    glBegin(GL_QUADS);                      // Левая грань
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0f, -100.0f, -100.0f);    // Низ лево
        glTexCoord2f(1.0f, 0.0f); glVertex3f(-100.0f, -100.0f,  100.0f);    // Низ право
        glTexCoord2f(1.0f, 1.0f); glVertex3f(-100.0f,  100.0f,  100.0f);    // Верх право
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-100.0f,  100.0f, -100.0f);    // Верх лево
    glEnd();
        //задняя часть
}
 
//-----------------------------------------------------------------------------
    map obj;
void display() {    
        glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glColor3f (0.0, 0.0, 0.0);
        obj.scene();
        //obj.see();
        obj.quadro();
        //glFlush (); 
        glutSwapBuffers();
 
} 
void keyboard (unsigned char key, int x, int y){
   switch (key) {
/*    case '1':
          obj.povorot(10);
          glutPostRedisplay();
          break;
      case '2':
          obj.povorot_about(100.0f, 100.0f, 10);
          glutPostRedisplay();
          break;
      case '3':
          GLdouble x, y, x1, y1;
          for(int i=0;i<=360;i++){
            x = obj.get_posXY(0);
            y = obj.get_posXY(1);
            obj.povorot_about(0.0f, 0.0f, i);
            x1 = obj.get_posXY(0);
            y1 = obj.get_posXY(1);
            glBegin(GL_LINES);
                glVertex2d(x, y);
                glVertex2d(x1, y1);
            glEnd();
          }glFlush();
          break;
      */
       case 'x':
          //glTranslatef(10.0f,0.0f,0.0f);
          glRotatef(10, 1.0f, 0.0f, 0.0f);
          glutPostRedisplay();
          break;
        case 'X':
          //glTranslatef(10.0f,0.0f,0.0f);
          glRotatef(-10, 1.0f, 0.0f, 0.0f);
          glutPostRedisplay();
          break;
        case 'y':
          //glTranslatef(10.0f,0.0f,0.0f);
          glRotatef(10, 0.0f, 1.0f, 0.0f);
          glutPostRedisplay();
          break;
        case 'Y':
          //glTranslatef(10.0f,0.0f,0.0f);
          glRotatef(-10, 0.0f, 1.0f, 0.0f);
          glutPostRedisplay();
          break;
          case 'z':
          //glTranslatef(10.0f,0.0f,0.0f);
          glRotatef(10, 0.0f, 0.0f, 1.0f);
          glutPostRedisplay();
          break;
        case 'Z':
          //glTranslatef(10.0f,0.0f,0.0f);
          glRotatef(-10, 0.0f, 0.0f, 1.0f);
          glutPostRedisplay();
          break;
      /*case 'z':
         if(obj.see_pointX()>10.0f)
            obj.action(0);
         glutPostRedisplay();
         break;
      case 'x':
          if(obj.see_pointX()<690.0f)
            obj.action(1);
         glutPostRedisplay();
         break;*/
      case 27:
          exit(-1);
          break;
      default:
         break;
   }
}
void key_special_listen(int sym, int x, int y) { 
    if(sym == GLUT_KEY_LEFT) { 
        glTranslatef(10.0f,0.0f,0.0f);
        glutPostRedisplay();
    }
}
void init () { 
        LoadGLTextures();           // Загрузка текстур
        glEnable(GL_TEXTURE_2D);        // Разрешение наложение текстуры
        glClearDepth(1.0);
        glDepthFunc(GL_LESS);
        glEnable(GL_DEPTH_TEST);
        glShadeModel(GL_SMOOTH);
 
        glClearColor (0.0, 0.0, 0.0, 0.0); 
        glMatrixMode(GL_PROJECTION); 
        glLoadIdentity();
        glOrtho(-400.0, 400.0, -300.0, 300.0, -200.0f, 200.0f);
}
//===MAIN======================================================================
int main(int argc, char** argv) { 
        glutInit(&argc, argv); 
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); 
        glutInitWindowSize (800, 600); 
        glutInitWindowPosition (200, 200); 
        glutCreateWindow ("Cube"); 
        init (); 
        glutDisplayFunc(display);
        glutSpecialFunc(key_special_listen);
        glutKeyboardFunc(keyboard);
        glutMainLoop(); 
        return 0;
}

Скрины

Как наложить разные текстуры на разные грани одного и того же куба?
Как наложить разные текстуры на разные грани одного и того же куба?


ЗЫ. В листинге возможны некоторые неточности(я недельки 2 назад делал), я не стал сейчас править код(он и так работает), уж очень устал после тренировки, думаю кому надо разберуться, а если что спрашивайте, поясню, или же вместе разберемся. Я тоже можно сказать новичок пока.
Управление: куб можно крутить по всем трем осям, нажимая одноименные клавиши(X,x,Y,y,Z,z), выход Esc.
0
33 / 27 / 2
Регистрация: 08.09.2010
Сообщений: 402
19.10.2010, 01:12 8
у меня вопрос по листингу, выдаются ошибки, чесн не могу разобраться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
c:\program files\microsoft visual studio 9.0\vc\include\gl\glaux.h(17) : warning C4068: неизвестная директива pragma
c:\program files\microsoft visual studio 9.0\vc\include\gl\glaux.h(374) : warning C4068: неизвестная директива pragma
c:\documents and settings\1\мои документы\visual studio 2008\projects\uio0\uio0\uio0.cpp(31) : error C2664: auxDIBImageLoadW: невозможно преобразовать параметр 1 из 'const char [6]' в 'LPCWSTR'
        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\1\мои документы\visual studio 2008\projects\uio0\uio0\uio0.cpp(32) : error C2664: auxDIBImageLoadW: невозможно преобразовать параметр 1 из 'const char [6]' в 'LPCWSTR'
        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\1\мои документы\visual studio 2008\projects\uio0\uio0\uio0.cpp(33) : error C2664: auxDIBImageLoadW: невозможно преобразовать параметр 1 из 'const char [6]' в 'LPCWSTR'
        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\1\мои документы\visual studio 2008\projects\uio0\uio0\uio0.cpp(34) : error C2664: auxDIBImageLoadW: невозможно преобразовать параметр 1 из 'const char [6]' в 'LPCWSTR'
        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\1\мои документы\visual studio 2008\projects\uio0\uio0\uio0.cpp(35) : error C2664: auxDIBImageLoadW: невозможно преобразовать параметр 1 из 'const char [6]' в 'LPCWSTR'
        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
c:\documents and settings\1\мои документы\visual studio 2008\projects\uio0\uio0\uio0.cpp(36) : error C2664: auxDIBImageLoadW: невозможно преобразовать параметр 1 из 'const char [6]' в 'LPCWSTR'
        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
Журнал построения был сохранен в "file://c:\Documents and Settings\1\Мои документы\Visual Studio 2008\Projects\uio0\uio0\Debug\BuildLog.htm"
uio0 - ошибок 6, предупреждений 2
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Комбинатор
979 / 248 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
19.10.2010, 10:28 9
White Luna,
1. Чей именно листинг?
2. Другие проекты запускались?(имею ввиду графику)
3. Если нет, тогда судя по логу ошибок у вас не подключены либы и прочее.. Почитайте в инете об этом. И я где-то в данном разделе создавал тему когда-то... там вроде даже архивчик выложен того что необходимо для полноценной работы с OpenGL.
4. У меня сейчас нет виндовса... так что проверить не могу.
0
33 / 27 / 2
Регистрация: 08.09.2010
Сообщений: 402
19.10.2010, 14:05 10
яс, изв
0
Комбинатор
979 / 248 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
19.10.2010, 16:58 11
Цитата Сообщение от White Luna Посмотреть сообщение
яс, изв
Так проблема решилась или нет?
Если что мы ведь можем подсказать... обращайтесь.
0
33 / 27 / 2
Регистрация: 08.09.2010
Сообщений: 402
19.10.2010, 17:45 12
проблема не решилась, хотя проект и запускается, но на нем ничего не отображется просто белое поле
0
Комбинатор
979 / 248 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
19.10.2010, 18:23 13
White Luna, а что за код вы используете?
0
33 / 27 / 2
Регистрация: 08.09.2010
Сообщений: 402
19.10.2010, 22:39 14
такая ситуация возникает при любом коде
ну вот пример. нашла на сайте картинку куба
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
)#include "stdafx.h"
#include "engine.h"
 GLvoid Engine::SetProjectionMatrix(GLvoid){
    glMatrixMode(GL_PROJECTION);                        // Действия будут производиться с матрицей проекции
    glLoadIdentity();                                   // Текущая матрица (проекции) сбрасывается на единичную
    glFrustum(-1, 1, -1, 1, 3, 10);                     // Устанавливается перспективная проекция
}
 
GLvoid Engine::SetModelviewMatrix(GLvoid){
    glMatrixMode(GL_MODELVIEW);                         // Действия будут производиться с матрицей модели
    glLoadIdentity();                                   // Текущая матрица (модели) сбрасывается на единичную
    glTranslatef(0.0, 0.0, -8.0);                       // Система координат переносится на 8 единиц вглубь сцены                                                 
    glRotatef(30.0, 1.0, 0.0, 0.0);                     // и поворачивается на 30 градусов вокруг оси x,
    glRotatef(70.0, 0.0, 1.0, 0.0);                     // а затем на 70 градусов вокруг оси y
}
 
GLvoid Engine::Resize(GLsizei width, GLsizei height){
    if (height == 0)                                    
    {
        height = 1;                                     
    }
 
    glViewport(0, 0, width, height);                    // Устанавливается область просмотра
 
    Height = height;
    Width = width;
 
    SetProjectionMatrix();
    SetModelviewMatrix();
}
 
GLvoid Engine::Init(GLvoid){
    glClearColor(0.2f, 0.5f, 0.75f, 1.0f);              // Устанавливается синий фон
    glClearDepth(1.0f);                                 // Устанавливается значение для
                                                        // заполнения буфера глубины по умолчанию
    glEnable(GL_DEPTH_TEST);                            // Включается тест глубины
    glDepthFunc(GL_LEQUAL);                             // Устанавливается значение, используемое
                                                        // в сравнениях при использовании
                                                        // буфера глубины
 
    glShadeModel(GL_SMOOTH);                            // Включается плавное затенение
    glEnable(GL_LINE_SMOOTH);                           // Включается сглаживание линий
    glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);             // Выбирается самый качественный
                                                        // режим сглаживания для линий
    glEnable(GL_BLEND);                                 // Включается смешение цветов, необходимое
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);  // для работы сглаживания и задается
                                                        // способ смешения
}
 
GLvoid Engine::Draw(GLvoid)                                 
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Очищается буфер кадра и буфер глубины
    glPushMatrix();                                     // Запоминается матрица модели
 
    glColor3f(1.0f, 1.0f, 1.0f);                        // Задается текущий цвет примитивов
    glutWireCube(2.0f);                                 // Рисуется проволочный куб со стороной 2
 
    glPopMatrix();                                      // Восстанавливается матрица модели
}
 
Engine *engine;
 
GLvoid display(GLvoid)
{
      engine->Draw();
      glutSwapBuffers();
}
 
GLvoid reshape(GLsizei width, GLsizei height)
{
      engine->Resize(width, height);
}
 
int main(int argc, char** argv)
{
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
      glutInitWindowSize(800, 600);
      glutInitWindowPosition(100, 100);
      glutCreateWindow("2.1. Каркас OpenGL приложения c использованием GLUT.");
      engine = new Engine();
      engine->Init();
      glutDisplayFunc(display);
      glutReshapeFunc(reshape);
      glutMainLoop();
      return 0;
}
0
Комбинатор
979 / 248 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
20.10.2010, 09:21 15
Цитата Сообщение от White Luna Посмотреть сообщение
такая ситуация возникает при любом коде
В любом примере? или при изменениях в данном коде?
Сам код вроде рабочий, вот только не видно кода из файла engine.h, который там подключается в верху... Но раз такая ситуация при любом коде, то дело не в коде... а в либах скорее всего.

Попробуй пример по проще.
И я повторюсь, ты либы подключала? На самом деле там не очень все просто, так что стыдиться нечего...
0
33 / 27 / 2
Регистрация: 08.09.2010
Сообщений: 402
20.10.2010, 09:32 16
я засунула папки с либами на их места
C++
1
engine.h
эта либ там отдельно подключала, она у ми рабочая, по крайней мере на неё ошибку не выдает
страно то что в консоле все показывает, хотя и не должно а в проекте нет,
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2010, 09:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Пояснения по чужим решениям одного того же задание (почему решения настолько разные)
решение от Unnamed самое кроткое global string_repeat extern malloc, memcpy, strlen section...

Как прикрутить разные текстуры к кубу, используя vbo?
помогите! такая проблема: Имеется куб, то есть 6 граней. Как, используя буфера (vbo), наложить на...

Как передать разные данные в разные копии user control
У меня сейчас есть UserControl(portraits) в который я добавил две копии другого...

Нарисовать куб, грани которого закрашены в разные цвета
Помогите, очень нужно! Нарисовать куб, грани которого закрашены в разные цвета(вид сбоку). Сделать...


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

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

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