Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2012, 16:18   #1
veter48
Форумчанин
 
Регистрация: 26.07.2010
Сообщений: 150
По умолчанию OpenGL и материалы

Здравствуйте. Есть программа:
Код:
#include <GL/glut.h> 

static int kv= 1;
static int kd = 1;

void reshape(int w, int h)
{
	glViewport(0, 0, w, h);
	
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(0, w, 0, h);
	
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

static void key(unsigned char key, int x, int y)
{
    switch (key) 
    {
        case 27 : 
        case 'q':
            exit(0);
            break;

        case '+':
            if (kv < 75 & kd < 75) 
            {
             kv += 1;
             kd += 1;
            }
            break;

        case '-': 
            if (kv > -5 & kd > -5) 
            {
             kv -= 1; 
             kd -= 1; 
            }
            break;
    }

    glutPostRedisplay();
}


void display()
{

	glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glClear(GL_COLOR_BUFFER_BIT);
	
	glBegin(GL_POLYGON);
	glColor3f(0.0, 0.0, 1.0);
	glVertex2i(150 - kv,300);
	glVertex2i(200, 250-kv);
	glVertex2i(300+kv, 300);
	glVertex2i(275, 350+kv);
	glVertex2i(200, 350+kv);
	glEnd();
	

	
	glBegin(GL_POLYGON);
	glColor3f(0.0, 0.0, 1.0);
	glVertex2i(450-kd, 300);
	glColor3f(0.0, 1.0, 0.0);
	glVertex2i(500, 250-kd);
	glColor3f(1.0, 0.0, 1.0);
	glVertex2i(600, 250-kd);
	glColor3f(1.0, 1.0, 0.0);
	glVertex2i(610+kd,260);
	glColor3f(1.5, 0.5, 0);
	glVertex2i(575, 350+kd);
	glColor3f(0.0, 1.0, 1.0);
	glVertex2i(500, 350+kd);

	glEnd();
	
	glutSwapBuffers();
}



int main (int argc, char * argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
	glutInitWindowSize(800, 600);
	glutInitWindowPosition(100,100);
	glutCreateWindow("Lab Darbs1");
	glutKeyboardFunc(key);
	glClearColor(1,1,1,1);
	
	glutReshapeFunc(reshape);
	glutDisplayFunc(display);
	
	glutMainLoop();
	
	return 0;
}
И надо сделать так чтоб многоугольники выглядели как стекло. Помогите хоть как начать.
veter48 вне форума Ответить с цитированием
Старый 20.04.2012, 19:48   #2
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Так ща посмотрим
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 20.04.2012 в 19:51.
kineziz вне форума Ответить с цитированием
Старый 20.04.2012, 19:50   #3
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Код написать не смогу т.к. не очень силен в определении материала но могу сказать то что нужно как минимум, прозрачность, отражение, и зеркальный цвет материала. Поправь если что упустил.

Прозрачность вы определили.
Степень отражения задается:
Код:
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, Peremen);

Peremen - Степень отражения материала (от 0 до 128);
Зеркальный цвет материала:
Код:
glMatreialfv(GL_FRONT_AND_BACK, GL_SPECULAR, fArray);

fArray[4] - RBGA цвет отражения
Поэкспериментируй может получится. Я сам не могу понять никак сколько уже учу OpenGL как работать с материалами
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Материалы для обучения программированию MasterCell Помощь студентам 0 14.04.2012 08:20
Справочные материалы Borland C++ 3.1 Nikotin Помощь студентам 1 07.01.2010 18:33
помогите найти материалы amneris Помощь студентам 2 27.03.2009 15:02