Результаты поиска
| |
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, 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 | Дата: Суббота, 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:05 | Сообщение # 17 | Тема: Вопросы по FreeGlut |
почетный гость
Сейчас нет на сайте
| Quote (SEvg) По простому говоря, вызываем glPushMatrix(), делаем изменения состояния OpenGL(вращение, масштабирование и т.д.), а потом вызываем glPopMatrix() и всё состояние возвращается в первозданный вид. Так это же получается как раз преобразования, а они мне не нужны... Мне нужно несколько слоёв... Quote (ad141) Можно ли как нибудь в Glut сделать несколько 2D слоев, что бы не перерисовывать всю сцену, а только некоторые слои отдельно?
Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
|
|
| |
ad141 | Дата: Вторник, 11 Декабря 2012, 17:45 | Сообщение # 18 | Тема: Вопросы по FreeGlut |
почетный гость
Сейчас нет на сайте
| Прогуглил, вроде бы нормальная библиотека, а есть статьи как её применять в 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
Баблосы здесь... Зарегестрируйся и начни получать деньги... Платят мало, но стабильно, а самое главное платят! а не обещают...
|
|
| |
|