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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рисование в Opengl, рисование в Opengl 
:(
    Опции темы
Dark19
Дата 12.5.2011, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне нужно сделать прогу типа 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 x=0,b=0;
int x1,x2;
int y=0,c=0;
int z,z1;
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)
{
    if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
    {
        down=true;
        l=true;
    }
    else
    {
        down=false;
        l=false;
    }
    x=ax;
    y=ay;
    cout<<x<<"  ";
    cout<<y<<endl;


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

    b=ax;
    c=ay;
    
}

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);
    //glVertex2f (x2, z1);
    //glVertex2f (x1, z1);

        glColor3f (0.0, 1.0, 0.0);
    glBegin (GL_LINES);

        glVertex3f (100, 900, 0.0);
        glVertex3f (100, 0, 0.0);

    glEnd();
    glutSwapBuffers();
glutPostRedisplay();
}
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);
                glutMouseFunc(mouse);
                glutDisplayFunc (Draw);
                glutKeyboardFunc(keyboard);
                
              glutMotionFunc(motion);
              //glutPassiveMotionFunc(motion);
        timer();
            
                glutMainLoop ();
                glutSwapBuffers();

        
    
        
        cin.get();
        cin.get();
}
Код




PM MAIL   Вверх
Vetos
Дата 14.5.2011, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что я могу сказать, заводи массив своих координат, или массивы х[] y[], при добавлении новой линии изменяй счетчик количества элементов. Т.е. в любом случае если ты чтото рисуешь в реалтайме, все нужно запоминать.


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

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

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


 




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


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

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