Понедельник, 30 Марта 2020, 10:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Форум игроделов » Записи участника » ad141 [77]
Результаты поиска
ad141Дата: Суббота, 23 Марта 2013, 00:07 | Сообщение # 1 | Тема: OpenGL + FreeType
почетный гость
Сейчас нет на сайте
а как можно оптимизировать динамику?

Допустим 1000 кубиков, текстурированных, 1х1х1 летают внутри куба 30х30х30
Стартуют они чисто случайно, а вот летят отталкиваясь от границ куба 30х30х30 при этом скорость остаётся постоянной, т.е. не какой физики.
Хотя старт можно сделать постоянным с одних и тех же мест.



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Пятница, 22 Марта 2013, 18:53 | Сообщение # 2 | Тема: OpenGL + FreeType
почетный гость
Сейчас нет на сайте
Я так подумал, что постоянный текст в меню рендерить каждый раз заного нецелесообразно. По этому я подумал, можно ли как то текст отрендерить в текстурку, что бы рендерить потом, только её?


Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Пятница, 22 Февраля 2013, 20:13 | Сообщение # 3 | Тема: OpenGL
почетный гость
Сейчас нет на сайте
Я вот не знаю как сделать так чтобы мышь на экране был как луч выходящий из камеры в 3Д пространстве.

У меня получается сделать так что бы луч выходил из камеры только тогда, когда мышь ровно по центру окна.

Дано:
Point3f CamPos; // Позиция камеры (x, y, z)
Point2f CamR; // Ориентация камеры (x, y)
Point2f Mouse; // Позиция мыши (x, y) y=x=(-1; 1)
float YЧ; // Соотношение окна (Высота/Ширина)

Надо получить позицию точки на некотором расстояние от камеры, которая задана позицией мыши.

Это вход в перспективу:

float x = Cam::fov/90.0f*Cam::Start;
float y = x*YX;
glFrustum(-x,x,-y,y,Cam::Start,Cam::Finish);

Перед отрисовкой:

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); //GL_ACCUM_BUFFER_BIT
glLoadIdentity();
glRotatef(-CamR.y,1.0f,0.0f,0.0f);
glRotatef(CamR.x,0.0f,1.0f,0.0f);
glTranslatef(-CamPos.x, -CamPos.y, -CamPos.z);

Надо как то получить эту точку:

glVertex3f(
CamPos.x+sin((Магия X) * GRAD)*cos(Магия Y * GRAD),
CamPos.y+(sin(Магия Y * GRAD)),
CamPos.z-cos((Магия X) * GRAD)*cos(Магия Y * GRAD)
);



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Суббота, 12 Января 2013, 18:09 | Сообщение # 4 | Тема: Model's to OpenGL
почетный гость
Сейчас нет на сайте
Подскожите, существуют ли какие ни будь библиотеки по загрузке моделей из файла? И что бы потом эту модель можно было нарисовать через OpenGL... Интересует формат *.obj или *.x, или др... (Желательно из SketchUp)


Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Среда, 09 Января 2013, 20:42 | Сообщение # 5 | Тема: Как загрузить модель в память?
почетный гость
Сейчас нет на сайте
Цитата (SEvg)
Очень советую использовать glDrawElements, вместо glBegin... glEnd


SEvg, пожалуйста поподробнее или ссыль на мануал/статью



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Среда, 09 Января 2013, 16:39 | Сообщение # 6 | Тема: Как загрузить модель в память?
почетный гость
Сейчас нет на сайте
ладно... Попробую разобратся... а можно ли как нибудь оптимизировать загрузку?

Добавлено (09.01.2013, 16:39)
---------------------------------------------
я слышал что то про списки в OpenGL типа оптимизируется отрисовка объекта по точкам, а потом отрисоваваешь весь объект, а не по точкам заного...



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Вторник, 08 Января 2013, 22:40 | Сообщение # 7 | Тема: Как загрузить модель в память?
почетный гость
Сейчас нет на сайте
Мне надоело рисовать модельку по точкам в OpenGL...
Я научился загружать модель *.obj в память (положение вершин и положение текстуры), но код работает только до 1000 точек...
Просьба написать код загрузки модели формата *.obj в память и её отрисовка в OpenGL...

Как должна модель хранится в памяти? я предпологал что массивом
Код

float v[3][9999], t[2][9999];
  int n;

где v - координата точки, t - координата текстуры, n - количество вершин в модели (Triangle only)...
Но я понял, что - хранить модель так нельзя... А как тогда? И как можно их считывать из файла?
Википедия - *.Obj

Добавлено (08.01.2013, 00:14)
---------------------------------------------

Код
class c_Model_Obj
{
public:
  bool Load(const char *fName)
  {
   Loaded = false;
   Nf = 0;
   char line[100];
   FILE *fp = fopen(fName,"r");
   if (fp != NULL)
   {
    float v[3][4000];unsigned int Nv = 0;
    float t[2][4000];unsigned int Nt = 0;
    float fv[9][4200];
    float ft[6][4200];
       while (fgets(line, 99, fp))
       {
     if (line[0] == 'v' && line[1] == 't')
     {
         sscanf(line, "%*c%*c %f %f", &t[0][Nt], &t[1][Nt]);                   
         Nt++;
     }  
     else
     if (line[0] == 'v' && line[1] == ' ')
     {
         sscanf(line, "%*c %f %f %f", &v[0][Nv], &v[1][Nv], &v[2][Nv]);                   
         Nv++;
     }  
     else
     if (line[0] == 'f')
     {
      unsigned int i[9];
         sscanf(line, "%*c %d/%d/%d %d/%d/%d %d/%d/%d", &i[0], &i[1], &i[2], &i[3], &i[4], &i[5], &i[6], &i[7], &i[8]);
      fv[0][Nf] = v[0][i[0]-1];
      fv[1][Nf] = v[1][i[0]-1];
      fv[2][Nf] = v[2][i[0]-1];

      fv[3][Nf] = v[0][i[3]-1];
      fv[4][Nf] = v[1][i[3]-1];
      fv[5][Nf] = v[2][i[3]-1];

      fv[6][Nf] = v[0][i[6]-1];
      fv[7][Nf] = v[1][i[6]-1];
      fv[8][Nf] = v[2][i[6]-1];

      ft[0][Nf] = t[0][i[1]-1];
      ft[1][Nf] = t[1][i[1]-1];

      ft[2][Nf] = t[0][i[4]-1];
      ft[3][Nf] = t[1][i[4]-1];

      ft[4][Nf] = t[0][i[7]-1];
      ft[5][Nf] = t[1][i[7]-1];

         Nf++;
     }
    }
    fclose(fp);
    vx = new float[Nf*3];
    vy = new float[Nf*3];
    vz = new float[Nf*3];
    tx = new float[Nf*2];
    ty = new float[Nf*2];
    for(unsigned int i = 0; i < Nf*3; i+=3)
    {
     vx[i] = fv[0][i];
     vx[i+1] = fv[3][i];
     vx[i+2] = fv[6][i];
     vy[i] = fv[1][i];
     vy[i+1] = fv[4][i];
     vy[i+2] = fv[7][i];
     vz[i] = fv[2][i];
     vz[i+1] = fv[5][i];
     vz[i+2] = fv[8][i];
     tx[i] = ft[0][i];
     tx[i+1] = ft[2][i];
     tx[i+2] = ft[4][i];
     ty[i] = ft[1][i];
     ty[i+1] = ft[3][i];
     ty[i+2] = ft[5][i];
    }
    Loaded = true;
    return true;
   }
   else
   {
    Loaded = false;
    return false;
   }
  }
  void Delete()
  {
   delete[] vx;
   delete[] vy;
   delete[] vz;
   delete[] tx;
   delete[] ty;
   Loaded = false;
   Nf = 0;
  }
  void Draw()
  {
   if(Loaded)
   {
     
     glColor3f(0.7f,0.7f,0.7f);
     for(unsigned int i = 0; i < Nf*3; i+=3)
     {
      //glTexCoord2f(tx[i],ty[i]);
      glBegin(GL_LINE_LOOP);
       glVertex3f(vx[i],vy[i],vz[i]);
       glVertex3f(vx[i+1],vy[i+1],vz[i+1]);
       glVertex3f(vx[i+2],vy[i+2],vz[i+2]);
      glEnd();
     }
   }
   else
   {
    glBegin(GL_QUADS);
     glColor3f(0.0f,1.0f,0.0f);              // Синий
           glVertex3f( 1.0f, 1.0f,-1.0f);          // Право верх квадрата (Верх)
           glVertex3f(-1.0f, 1.0f,-1.0f);          // Лево верх
           glVertex3f(-1.0f, 1.0f, 1.0f);          // Лево низ
           glVertex3f( 1.0f, 1.0f, 1.0f);          // Право низ
     glColor3f(1.0f,0.5f,0.0f);              // Оранжевый
           glVertex3f( 1.0f,-1.0f, 1.0f);          // Верх право квадрата (Низ)
           glVertex3f(-1.0f,-1.0f, 1.0f);          // Верх лево
           glVertex3f(-1.0f,-1.0f,-1.0f);          // Низ лево
           glVertex3f( 1.0f,-1.0f,-1.0f);          // Низ право
     glColor3f(1.0f,0.0f,0.0f);              // Красный
           glVertex3f( 1.0f, 1.0f, 1.0f);          // Верх право квадрата (Перед)
           glVertex3f(-1.0f, 1.0f, 1.0f);          // Верх лево
           glVertex3f(-1.0f,-1.0f, 1.0f);          // Низ лево
           glVertex3f( 1.0f,-1.0f, 1.0f);          // Низ право
     glColor3f(1.0f,1.0f,0.0f);              // Желтый
           glVertex3f( 1.0f,-1.0f,-1.0f);          // Верх право квадрата (Зад)
           glVertex3f(-1.0f,-1.0f,-1.0f);          // Верх лево
           glVertex3f(-1.0f, 1.0f,-1.0f);          // Низ лево
           glVertex3f( 1.0f, 1.0f,-1.0f);          // Низ право
     glColor3f(0.0f,0.0f,1.0f);              // Синий
           glVertex3f(-1.0f, 1.0f, 1.0f);          // Верх право квадрата (Лево)
           glVertex3f(-1.0f, 1.0f,-1.0f);          // Верх лево
           glVertex3f(-1.0f,-1.0f,-1.0f);          // Низ лево
           glVertex3f(-1.0f,-1.0f, 1.0f);          // Низ право
     glColor3f(1.0f,0.0f,1.0f);              // Фиолетовый
           glVertex3f( 1.0f, 1.0f,-1.0f);          // Верх право квадрата (Право)
           glVertex3f( 1.0f, 1.0f, 1.0f);          // Верх лево
           glVertex3f( 1.0f,-1.0f, 1.0f);          // Низ лево
           glVertex3f( 1.0f,-1.0f,-1.0f);          // Низ право
    glEnd();  
   }
  }
private:
  float *vx;
  float *vy;
  float *vz;
  float *tx;
  float *ty;
  unsigned int Nf;
  bool Loaded;
};

Добавлено (08.01.2013, 00:16)
---------------------------------------------
и как модель после загрузки из файла *.obj можно конвертировать в бинарник? ну чтобы быстрее грузилась...

Добавлено (08.01.2013, 22:40)
---------------------------------------------
Не кто с такими вопросами не сталкивался?!



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Суббота, 22 Декабря 2012, 18:10 | Сообщение # 8 | Тема: Загрузка файла в память?
почетный гость
Сейчас нет на сайте
Окей, попробую...


Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Суббота, 22 Декабря 2012, 15:04 | Сообщение # 9 | Тема: Загрузка файла в память?
почетный гость
Сейчас нет на сайте
Изучал я OpenGL и оказалось что в хендле не объявлены дескрипторы на работу с мульти-буферром или что то в этом роде (для сглаживания)...
Решил пойти другим путём... Движок 3Impact! Но вот проблема, мне надо загружать один и тот же объект несколько раз через функцию
BODY* iBodyCreate(char*);
где нужно всего лишь указывать путь к модельке...
Но при много кратном использовании загрузка получается медленной... Я нашел выход, можно загружать через функцию
BODY* iBodyCreateFromMemory(char*,int,char*,int);
Где нужно указывать точки начала двух моделек, а также их размеры в байтах...

Тык вот сам вопрос:
Как можно эти модельки предварительно загрузить в память?
И не только модельки, а также картинки, музыку и др...

Вот функции Движка



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Среда, 19 Декабря 2012, 20:17 | Сообщение # 10 | Тема: Opengl-помощь
почетный гость
Сейчас нет на сайте
Ребят как обновить gl.h ? AIDA 64 и EVEREST показывают что видюха поддерживает 3-ию полностью... Но Хендлер имеет только функции первой OpenGL... Как быть? Дрова на видюху обновлял... Может коряво...


Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Воскресенье, 16 Декабря 2012, 14:49 | Сообщение # 11 | Тема: Вопрос-Ответ (C++)
почетный гость
Сейчас нет на сайте
sem6666, ты вместо "if" пишешь "while" ?!


Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Суббота, 15 Декабря 2012, 16:12 | Сообщение # 12 | Тема: Вопрос-Ответ (C++)
почетный гость
Сейчас нет на сайте
Да это всё у меня есть!

Добавлено (15.12.2012, 16:12)
---------------------------------------------
Мне нужно вращение куба как в игре EDGE

Дано:

Code
namespace Keys
{
       bool Up, Left, Down, Right;
}



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Суббота, 15 Декабря 2012, 14:50 | Сообщение # 13 | Тема: Вопрос-Ответ (C++)
почетный гость
Сейчас нет на сайте
Как вращать куб по двум осям?

X и Z оси...

К примеру с помощью клавиш стрелок...

Как бы куб перекатывается... Как реализовать?
Получается только независимое вращение по одной оси...



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Пятница, 14 Декабря 2012, 16:15 | Сообщение # 14 | Тема: Вопрос-Ответ (C++)
почетный гость
Сейчас нет на сайте
Как сделать в начале код так чтобы например:

если Unix то
#include <GL/freeglut.h>
если Win32 то
#include <GL\freeglut.h>

Извиняюсь... Оказывается всё работает... Но всё ровно научите работать с #if #end if



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...


Сообщение отредактировал ad141 - Пятница, 14 Декабря 2012, 16:19
ad141Дата: Пятница, 14 Декабря 2012, 16:12 | Сообщение # 15 | Тема: Графика, выбираю графическую библиотеку (для новичка)
почетный гость
Сейчас нет на сайте
Рекомендую OpenGL FreeGlut - Кросс-платформенная, Сам пишу и на ноуте где стоит Ubuntu 64, и на компе где WinXP и там и сдесь работает...


Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Вторник, 11 Декабря 2012, 20:59 | Сообщение # 16 | Тема: Вопросы по FreeGlut
почетный гость
Сейчас нет на сайте
Да уж всё понятно... Мне объяснили smile


Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Вторник, 11 Декабря 2012, 20:05 | Сообщение # 17 | Тема: Вопросы по FreeGlut
почетный гость
Сейчас нет на сайте
Quote (SEvg)
По простому говоря, вызываем glPushMatrix(), делаем изменения состояния OpenGL(вращение, масштабирование и т.д.), а потом вызываем glPopMatrix() и всё состояние возвращается в первозданный вид.

Так это же получается как раз преобразования, а они мне не нужны... Мне нужно несколько слоёв...
Quote (ad141)
Можно ли как нибудь в Glut сделать несколько 2D слоев, что бы не перерисовывать всю сцену, а только некоторые слои отдельно?



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Вторник, 11 Декабря 2012, 17:45 | Сообщение # 18 | Тема: Вопросы по FreeGlut
почетный гость
Сейчас нет на сайте
Quote (Snuux)
DeViL

Прогуглил, вроде бы нормальная библиотека, а есть статьи как её применять в OpenGL?

Quote (Snuux)
Насколько я знаю, можно использовать glPushMatrix(); glPopMatrix();

О работе этих функций, можно по подробнее?

Quote (Snuux)

GLUT - он кроссплатформенный, так что код не будет отличатся от Window'совского. Используй GCC компилятор (например его можно использовать с Code::Blocks или Dev-C).


Я так и делаю... Но дело в том что многие статьи по использованию GLUT подразумевают использование Windows'a...
Все обработчики берутся от туда, и Инициализация окон идет через Windows... Хотя я разобрался с инициализацией через GLUT... Но лучше бы статьи где используются актуальные, кросс-платформенные библиотеки...



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
ad141Дата: Пятница, 07 Декабря 2012, 18:03 | Сообщение # 19 | Тема: Вопросы по FreeGlut
почетный гость
Сейчас нет на сайте
Где можно найти статьи по OpenGl и FreeGlut, но такие, которые предназначены не только для программирования на Windows...

Можно ли как нибудь в Glut сделать несколько 2D слоев, что бы не перерисовывать всю сцену, а только некоторые слои отдельно?
Как можно загружать текстуры *.dds, *.png в Glut? GLAUX - уже не актуален...

Требуется поддержка Windows и Ubuntu...



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...


Сообщение отредактировал ad141 - Пятница, 07 Декабря 2012, 18:07
ad141Дата: Вторник, 11 Сентября 2012, 16:11 | Сообщение # 20 | Тема: Wexler T7001 Электронная книга...
почетный гость
Сейчас нет на сайте
У меня такой вопрос: Можно ли написать собственную систему для электронной книги Wexler T7001b...
Где то я видел что он использует ядро Linux



Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
Форум игроделов » Записи участника » ad141 [77]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2020 Рейтинг