PMG

Форумы по созданию игр
Текущее время: 24 апр 2024 08:41

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Рисование мышей в Opengl
СообщениеДобавлено: 14 май 2011 18:02 
Не в сети
Новичок

Зарегистрирован: 14 май 2011 17:47
Сообщения: 3
Мне нужно сделать прогу типа Paint. Я с помощью glutMotionFunc сделал чтобы рисовалась линия и ее можно было крутить и растягивать как пожелаешь, но когда рисуешь вторую линию, первая пропадает. Как сделать чтоб первая и все последующие линии оставались (чтоб ими можно было рисовать). С помощью массивов пробовал, ничего не выходит. Вот код, подскажите что может поменять или добавить, может пример кто даст...
Код:
#include <windows.h>
#include <iostream>
#include "GL/gl.h"
#include "GL/glu.h"
#include "GLAUX.h"
#include <glut.h>
using namespace std;
int const n=1000;
int x=0,b=0;
int x1,x2;
int y=0,c=0;
int z,z1;
int mas1[n],mas2[n],mas3[n],mas4[n],j,k;
bool down=false, l=false;
unsigned char kei;
void keyboard ( unsigned char key, int x, int y)
{
    switch (key)
        {

            case 'q':

            exit(0);

            break;
    }
}


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

            gluOrtho2D(0, w, h, 0);
             
         glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
      }


void mouse(int button, int state, int ax, int ay)
{
   b=button;
   c=state;
   if (state == GLUT_DOWN)
   {
      down=true;
      l=true;
   }
   else
   {
      down=false;
      l=false;
   }
   x=ax;
   y=ay;
                                                                                              
                                                                                                        


}
void motion(int ax, int ay)
{
   x1=x;
   z=y;
   if (l)
   {
      x2=ax;
      z1=ay;
   }
      if (!l)
   {
      x1=ax;
      z=ay;
   }
   glutPostRedisplay();
}

void Draw()
{
   
   glClear (GL_COLOR_BUFFER_BIT);
   glLineWidth(5);
   glBegin (GL_LINES);
   glColor3f (0.0, 1.0, 0.0);
      glVertex2f (x1,z);
      glVertex2f (x2,z1);
      
   glEnd();

      glutSwapBuffers();
}
void timer(int=0)
{
   Draw();
   glutTimerFunc (1,timer,0);
   

}
void Initialize()
{
   glClearColor (1.0, 1.0, 1.0, 1.0);
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity();
   glOrtho (0, 1280, 1024, 0, -1, 1);
      
   
}
int main(int iArgc,char** cppArgv)
{

      
            glutInit (&iArgc, cppArgv);
            glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
            
            glutInitWindowPosition (0, 0);
            glutCreateWindow ("GRAF");
            Initialize();
            glutFullScreen();
         glutReshapeFunc (reshape);
         glutKeyboardFunc(keyboard);
            glutMouseFunc(mouse);
            glutMotionFunc(motion);
                                                                    //glutPassiveMotionFunc(motion);
            glutDisplayFunc (Draw);
            
            

          
                                                                                               //timer();
         
            glutMainLoop ();

       
   
      
      cin.get();
      cin.get();
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисование мышей в Opengl
СообщениеДобавлено: 08 июн 2011 14:52 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Я думаю линии надо сохранять в массиве и выводить одну за другой каждый раз при перерисовке.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB