1 / 1 / 0
Регистрация: 27.02.2010
Сообщений: 190
1

OpenGL C++: чтобы свет падал на сферу, а не на линии

10.10.2012, 02:07. Показов 1965. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать чтобы свет падал к примеру на сферу, а на линии не падал. Ибо линии меняют цвет.
Может ли кто сказать где найти готовый проект с каким-либо простым рисунком в с++?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2012, 02:07
Ответы с готовыми решениями:

qt opengl наложение текстуры на сферу полигонами
недавно понадобилось построить трехмерную модель земли. до этого писал на с++, но только консольные...

Свет в OpenGL
У меня отрисовывается шахматное поле черными и белыми квадратами (GL_QUADS). Также подгружаю модель...

Opengl es: свет в сцене
Всем привет!! у меня на сцене есть источник света, но он светит не на всю сцену, а как сделать так...

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

6
14 / 9 / 0
Регистрация: 12.07.2012
Сообщений: 82
10.10.2012, 18:01 2
Просто перед отрисовкой линий пишешь:
C++
1
glDisable(GL_LIGHTING);
а после отрисовки пишешь:
C++
1
glEnable(GL_LIGHTING);
А для готовых проектов -
http://pmg.org.ru/nehe/
там можно перейти скачать разные проекты.
1
1 / 1 / 0
Регистрация: 27.02.2010
Сообщений: 190
11.10.2012, 10:53  [ТС] 3
Спасибо зап совет. Помогло.
На сайте я не нашел готовых робот с OpenGL в с++. Мне бы еще очень не помешало бы научиться текстуры налаживать в с++, но нигде внятного пояснения на эту тему я не нашел. Теперь вот ищу уже готовые работы, возможно там найду текстурирование.
0
angstrom
11.10.2012, 11:08 4
Все уроки "пришли" отсюда и существуют вариации для всевозможных языков. Выбираете подходящий урок, переходите в конец страницы и скачиваете версию для нужного языка.
1 / 1 / 0
Регистрация: 27.02.2010
Сообщений: 190
12.10.2012, 00:47  [ТС] 5
Скачал пример с текстурированием - очень много ненужного и лишнего кода, который очень сложно понять новичку. Мне бы найти простое наложение текстуры к примеру на прямоугольник...
0
angstrom
12.10.2012, 05:00 6
Для вас должен подойти 6-ой урок. Ничего сложного там нет. В этих уроках не используется библиотека GLUT, отсюда и кажущаяся сложность, так как всю инициализацию и уборку "мусора" приходится делать самостоятельно.
1 / 1 / 0
Регистрация: 27.02.2010
Сообщений: 190
14.10.2012, 22:01  [ТС] 7
Нашел другой пример, в разы легче. Все работает, но есть другая проблема.
Рисую сферы со светом в Opengl, поставил текстуру на фон. Проблема в том, что когда я ставлю темный фон на задний план, меняется и освещение сфер - они становятся более темными. Как это выключить?
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
void CPicture::OnShowPicture() 
 {
 
 unsigned int textures[1];
 AUX_RGBImageRec *texture1=auxDIBImageLoadA("texturebmp1.bmp");
 glGenTextures(1, &textures[1]);
 glBindTexture(GL_TEXTURE_2D, textures[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); 
 glEnable(GL_TEXTURE_2D);
 glBegin(GL_QUADS);
 glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, -1.0);
 glTexCoord2f(0.0, 1.0); glVertex2f(-1.0, 1.0);
 glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0);
 glTexCoord2f(1.0, 0.0); glVertex2f(1.0, -1.0);
 glEnd();
 
 glPushMatrix(); 
 
 GLUquadricObj *quadObj;
 quadObj = gluNewQuadric(); // создаем новый Quadric объект
 
 // glClearColor(0, 0.5, 0.99, 1);
 
 float pos[4] = {-0.9f,-1.9f,0.9f,1};
 float dif[4] = {1,1,1,1};
 float am[4] = {0,0,0,1};
 glEnable(GL_LIGHTING
 );
 glEnable(GL_LIGHT1);
 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
 glEnable(GL_COLOR_MATERIAL);
 glLightfv(GL_LIGHT1, GL_POSITION, pos);
 glLightfv(GL_LIGHT1, GL_AMBIENT, am);
 glLightfv(GL_LIGHT1, GL_DIFFUSE, dif);
 gluQuadricDrawStyle(quadObj, GLU_FILL); // устанавливаем стиль: закрашенный
 
 //a = al*glcolor
 //d = dl*glcolor + a
 
 glColor3f(1,1,1);
 glTranslatef(-0.7, 0.2, 0); // Сдвиг
 gluSphere(quadObj, 0.15, 100, 10); // рисуем сферу
 
 glTranslatef(0, -0.3, 0); // Сдвиг
 gluSphere(quadObj, 0.22, 100, 10); // рисуем сферу
 
 glTranslatef(0, -0.4, 0); // Сдвиг
 gluSphere(quadObj, 0.3, 100, 10); // рисуем сферу
 
 
 
 glPopMatrix();
 
 glFinish(); //закончили с OpenGL
 SwapBuffers(wglGetCurrentDC()); //вывод рисунка в контекст
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2012, 22:01
Помогаю со студенческими работами здесь

OpenGL, свет зависит от фона
Здравствуйте. Рисую сферы со светом в Opengl, поставил текстуру на фон. Проблема в том, что когда я...

Свет в OpenGL. Не выводится изображение на экран.
Пользуюсь модулем dglopengl.pas. Пытаюсь создать имитацию света, рисуя изображение, прикреплённое к...

Свет без спот лайтов OpenGL
http://img31.imageshack.us/img31/6276/dransik012.png ...

Rigidbody2D импульс AddForce() Как сделать, чтобы после импульса объект не падал назад?
Здравствуйте! Даю импульс объекту: rBD.AddForce (new Vector2 (_impulseForce, 0),...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru