Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenGL монохромность, почему так? 
:(
    Опции темы
5kill
Дата 23.5.2011, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 13.5.2011

Репутация: нет
Всего: нет



Добрый день.
Осваиваю, или пытаюсь это сделать, OpenGL.
К сожалению не так много подробной информации как хотелось бы можно найти.
Столкнулся с такой проблемой - сцена отображается в черно-белых тонах, хотя, как казалось бы, должна быть цветной.
Помогите, плз, разобраться почему так.
Пишу на C# с использованием Tao framework.

Вот код, простой как сибирский валенок...

При инициализации формы

Код

            // инициализация OpenGL
            // инициализация бибилиотеки glut 
            Glut.glutInit();
            // инициализация режима экрана 
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE);

            // установка цвета очистки экрана (RGBA) 
            Gl.glClearColor(255, 255, 255, 1);

            // установка порта вывода 
            Gl.glViewport(0, 0, AnT.Width, AnT.Height);

            // активация проекционной матрицы 
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            // очистка матрицы 
            Gl.glLoadIdentity();

            Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 2000);

            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();

            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glEnable(Gl.GL_LIGHTING);
            Gl.glEnable(Gl.GL_LIGHT0);



Отрисовка, происходит по таймеру
Код


       private void draw()
        {
            // очистка буфера цвета и буфера глубины 
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glClearColor(255, 255, 255, 1);
            // очищение текущей матрицы 
            Gl.glLoadIdentity();

            Gl.glPushMatrix();
             // перемещаем камеру для более хорошего обзора объекта 
            Gl.glTranslated(0, 0, -zoom);
            Gl.glRotated(rotationX, 1, 0, 0);
            Gl.glRotated(rotationY, 0, 1, 0);
            Gl.glRotated(rotationZ, 0, 0, 1);

            Gl.glBegin(Gl.GL_LINES);

            Gl.glColor3f(255, 0, 0);
            Gl.glVertex3d(0, 0, 0);
            Gl.glVertex3d(100, 0, 0);

            Gl.glColor3f(0, 255, 0);
            Gl.glVertex3d(0, 0, 0);
            Gl.glVertex3d(0, 100, 0);

            Gl.glColor3f(0, 0, 255);
            Gl.glVertex3d(0, 0, 0);
            Gl.glVertex3d(0, 0, 100);

            Gl.glEnd();

            ///
            /// Рисуем плоскость на которой расположены объекты
            /// синим цветом
            /// 
            Gl.glColor3f(0, 0, 0.9f);
            Gl.glNormal3f(0, 1, 0);
            
            Gl.glBegin(Gl.GL_QUADS);
                Gl.glVertex3f(-100, -25, -100);
                Gl.glVertex3f(-100, -25, 100);
                Gl.glVertex3f(100, -25, 100);
                Gl.glVertex3f(100, -25, -100);
            Gl.glEnd();

            ///
            /// Рисуем красный куб
            /// 
            Gl.glColor3f(1, 0, 0);
            Glut.glutSolidCube(48);

            ///
            /// Рисуем зеленую сферу
            /// 
            Gl.glColor3f(0, 1, 0);
            Gl.glPushMatrix();
            Gl.glTranslated(-60, 0, 0);
            Glut.glutSolidSphere(25, 64, 64);
            Gl.glPopMatrix();

            ///
            /// Рисуем желтый конус
            /// 
            Gl.glColor3f(1, 1, 0);
            Gl.glPushMatrix();
            Gl.glRotated(-90, 1, 0, 0);
            Gl.glTranslated(60, 0, -24);
            Glut.glutSolidCone(25, 50, 64, 64);
            Gl.glPopMatrix();

            ///
            /// Рисуем пуппурный тор
            /// 
            Gl.glColor3f(1, 0, 1);
            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, 60);
            Glut.glutSolidTorus(8, 16, 64, 64);
            Gl.glPopMatrix();

            ///
            /// Рисуем голубой октаэдр
            /// 
            Gl.glColor3f(0, 1, 1);
            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, -60);
            Gl.glScaled(25, 25, 25);
            Glut.glutSolidOctahedron();
            Gl.glPopMatrix();

            Gl.glPopMatrix();

            Gl.glFlush();

            AnT.Invalidate();
        }



А вот печальный результат:
user posted image
PM MAIL   Вверх
Amp
Дата 23.5.2011, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 2
Всего: 17



glEnable(GL_COLOR_MATERIAL) ?
PM MAIL   Вверх
5kill
Дата 23.5.2011, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 13.5.2011

Репутация: нет
Всего: нет



Точно! Спасибо.
Хотя и не понимаю почему это отражается на рисуемых осях координат...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.