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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenGl в C++, не могу понять как сделать книгу 
V
    Опции темы
xpk
  Дата 24.8.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите ! Сделал Книгу в C++ (бонально несколько страниц ) немогу сообразить как сделоть чтоб при нажатии клавиши перелистовалась страница?Как в одну так и в другую сторону помогите 
PM MAIL   Вверх
xpk
Дата 24.8.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



надо чтоб эти страницы могли открываться при нажитии клавиши по одной за оно нажатие как в одну так и в другую сторону помогите или посоветуйте где можно узнать!

Код



#include <windows.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>


    

  


void CALLBACK resize(int width,int height)
{
   glViewport(0,0,width,height);
   glMatrixMode( GL_PROJECTION );
   glLoadIdentity();
   glOrtho(-5,5, -5,5, 2,12);   
   gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
   glMatrixMode( GL_MODELVIEW );
}    





void CALLBACK display(void)
{



   glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glPushMatrix();  



  glLineWidth(40); 
                  
 glBegin(GL_LINES);
 
   glColor3d(1,0,0);  
   glVertex3d(0,0,0);
   glVertex3d(2,0,0);
   
 glEnd();

 glBegin(GL_LINES);
    glColor3d(0,1,0);
    glVertex3d(0,0,0.01);
    glVertex3d(2,0,0.01);
    
 glEnd();

 glBegin(GL_LINES);
     glColor3d(0,0,1);
     glVertex3d(0,0,0.02);
     glVertex3d(2,0,0.02);

 glEnd();
 glBegin(GL_LINES);
      glColor3d(1,1,0);
      glVertex3d(0,0,0.04);
      glVertex3d(2,0,0.04);
 glEnd();

 glBegin(GL_LINES);
       glColor3d(0,1,1);
       glVertex3d(0,0,0.06);
       glVertex3d(2,0,0.06);
glEnd();
  glBegin(GL_LINES);        
        glColor3d(1,0,1);
        glVertex3d(0,0,0.08);
        glVertex3d(2,0,0.08);

   glEnd();

 

 glPushMatrix();

   glTranslated(0,0,0);
   glColor3d(1,1,1);
   auxSolidBox(0.1,1,0.1);

 glPopMatrix();
  
glPopMatrix();



    auxSwapBuffers();
}



void main()
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};
GLfloat mat_specular[] = {1,1,1,1};


  

  auxInitPosition( 100, 100, 400, 400);
    auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
    auxInitWindow( "Книга" );
    auxIdleFunc(display);
    auxReshapeFunc(resize);

  
    glEnable(GL_DEPTH_TEST);

    glEnable(GL_COLOR_MATERIAL);

    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    glLightfv(GL_LIGHT0, GL_POSITION, pos);
    glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);




    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
    glMaterialf(GL_FRONT, GL_SHININESS, 128.0);

    

    



    auxMainLoop(display);
}


PM MAIL   Вверх
Rickert
Дата 25.8.2006, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Несколько вариантов: делать анимацию и экспортировать её, затем открывать и проигрывать. Либо, если страницы не имею свойства мяться, то бишь, они как литые плиты, то можно просто вращать плоскость страницы относительно оси, находящейся в произвольной точке пространства. 

Это сообщение отредактировал(а) Rickert - 25.8.2006, 04:00


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
xpk
Дата 26.8.2006, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да мне надо чтобы стараница вращалась при нажатии кнопки до определённого уровня (до поверхности на которой лежит ), а потом начинала вращения следующая страница пока книга не закроется .
И таким же образом в обратную сторону 



вот я и не знаю как это сделать ПОМОГИЕ ,НАПИШИТЕ КАК ЭТО СДЕЛАТЬ

если не сложно по подробней! smile 
PM MAIL   Вверх
Rickert
Дата 27.8.2006, 06:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Бери в руки учебник для ВУЗов по стереометрии и ищи "вращение плоскости относительно оси" - там расписана вся математика. Учись искать и применять на практике теорию. Это составляет 50% времени программиста.



--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
xpk
Дата 27.8.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

int alpha=0, beta=0;
int i=0;


void CALLBACK Key_LEFT(void)
{
    alpha +=-5;    
}
void CALLBACK Key_RIGHT(void)
{
  beta += 5;
}
.
.
.
glRotated(alpha,1,0,0);
glRotated(beta,1,0,0);




при помощи нажатия кнопок у меня будет крутиться картинка вокруг оси в лево и право,
а я незнаю как сделать чтобы лист останавливался на опр уровне и начинал двигаться другой????

Подскажите КАК
PM MAIL   Вверх
Rickert
Дата 27.8.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Так у тебя лист будет крутиться относительно оси x, а у тебе крутить надо относительно произвольной оси, которая находиться в произвольной точке пространства и повёрнута на произвольный угол.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
xpk
Дата 27.8.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да в принцепе мне не важно по какой оси будет поворот. Мне важно понять Как сделать что при повароте на определённый угол страница перестала поварачиваться , и стала поварачиваться следуюЩАЯ вот что для меня НЕ ПОНЯТНО ( если зноаешь напиши как)
PM MAIL   Вверх
chozen
Дата 29.8.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я что, скажи мне, тебе мешает мониторить значения alpha и beta в твоем коде???

Все ж прозрачно...

Есть код, рисующий страницы, который рисует их в зависимости от определенных значений (в твоем случае - альфа и бета). Запихиваешь куда-нить в код   smile  их проверку, а при рисовании учитываешь это значение: если надо, ничего не делаешь, если надо - рисуешь страницу и переназначешь эти значения.  Аж сам запутался...  smile 
PM MAIL   Вверх
xpk
Дата 29.8.2006, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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