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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2013, 17:10   #1
Bazilik
Новичок
Джуниор
 
Регистрация: 06.03.2013
Сообщений: 1
По умолчанию Движение объектов. C++. Glut.h

В общем есть квадрат, как заставить двигаться его. Просто я недавно начал изучать подобное, не знаю как организовать. Если можно, то посоветуйте учебники по программированию в 2D пространстве на C + OpenGL.


в общем дело такое:
Код:
#include <GL/glut.h> 
#include <GL/glu.h> 

float x1cb=-0.05, y1cb=0.05, x2cb=0.05, y2cb=-0.05, i=-1, d=0.05, j;

void display() 
{ 
  
  glClear(GL_COLOR_BUFFER_BIT);
  
  glBegin(GL_LINES);						
    glColor3f(1,1,1);
	for(i=-1;i<1;i=i+0.01)
	 for(j=1;j>-1;j=j-0.01)
	{
		glVertex2f(i,-1);
		glVertex2f(i,1);
		glVertex2f(-1,i);
		glVertex2f(1,i);
	}
  glEnd();

  glBegin(GL_LINES);
    glColor3f(0.9,0.9,0.9);
	for(i=-1;i<1;i=i+0.05)
	 for(j=1;j>-1;j=j-0.05)
	{
		glVertex2f(i,-1);
		glVertex2f(i,1);
		glVertex2f(-1,i);					
		glVertex2f(1,i);					
	}			
   glEnd();
					
  glBegin(GL_LINES);						
    glColor3f(0.777,0.777,0.777);
	for(i=-1;i<1;i=i+0.1)
	 for(j=1;j>-1;j=j-0.1)
	{
		glVertex2f(i,-1);
		glVertex2f(i,1);
		glVertex2f(-1,i);
		glVertex2f(1,i);
	}
  glEnd();

  
 

  


  glBegin(GL_QUADS);        
    glColor3f(0,1,0);       
	glVertex2f(x1cb, y1cb); 
	glVertex2f(x2cb, y1cb); 
	glVertex2f(x2cb, y2cb);
	glVertex2f(x1cb, y2cb);
  glEnd();
  
  glBegin(GL_LINES);
    glColor3f(0,0,0);
	//ось Y
	glVertex2f(0, 1);
	glVertex2f(0, -1);
	//ось X
	glVertex2f(-1, 0);
	glVertex2f(1, 0);
  glEnd();
 
  glBegin(GL_LINES);       
    glColor3f(0,0,0);        
	//line 1                 
    glVertex2f(x1cb, y1cb);  
	glVertex2f(x2cb, y1cb);  
	//line 2                 
	glVertex2f(x2cb, y1cb);  
	glVertex2f(x2cb, y2cb);  
	//line 3                 
	glVertex2f(x2cb, y2cb); 
	glVertex2f(x1cb, y2cb);   
	//line 4                 
	glVertex2f(x1cb, y2cb);  
	glVertex2f(x1cb, y1cb); 
	//                       
  glEnd();                   
  glFlush();
} 

void Keyboard(unsigned char key, int x, int y)
{
#define ESCAPE '\033'

	if( key == ESCAPE )
       exit(0);
}

int main(int argc, char **argv) 
{

  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize(600, 600);
  glutInitWindowPosition(100, 100);
  glutCreateWindow("Green square");
  glClearColor(0.9, 0.9, 0.7, 1);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
  glutDisplayFunc(display);
  glutKeyboardFunc(Keyboard);
  glutMainLoop();
}
эти переменные содержат координаты квадрата в начальный момент:
Код:
float x1cb=-0.05, y1cb=0.05, x2cb=0.05, y2cb=-0.05
собственно сам вопрос: в какой функции нужно прописывать нажатие клавиши и реагирование (изменение глобальных переменных). И, мало изменить переменные, как сделать перерисовку картины.

З.Ы. Сеточку я для удобства сделал, чтобы было удобнее ориентироваться в координатах.
Bazilik вне форума Ответить с цитированием
Старый 06.03.2013, 21:16   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

http://pmg.org.ru/nehe/
_Bers вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение объектов, паскаль Alina111 Помощь студентам 3 06.06.2012 14:59
Движение объектов в Delphi citruswa Общие вопросы Delphi 3 10.03.2012 10:16
свободное движение объектов С++ ruber54 Помощь студентам 4 12.12.2011 21:33
Движение графических объектов Krivo1993 Помощь студентам 4 31.01.2011 13:58
Движение 2-x объектов (Delphi) VadEr Помощь студентам 2 06.06.2009 17:19