Программирование CUDA/OpenGL

KL9YnEr

Ословед
glBegin(GL_POINTS);
glVertex3f(0, 0, 0);
glEnd;
glTranslatef(5, 0, 0);
Итог : Точка нарисуется в точке x=5

glBegin(GL_POINTS);
glVertex3f(0, 0, 0);
glEnd;
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);

Итог : а) Точка нарисуется в x=5,y=0,z=0
б) Точка нарисуется в x=1,y=0,z=0
???????????????????????????????????????????????????
 

reboot

Ословед
glBegin(GL_POINTS);
glVertex3f(0, 0, 0);
glEnd;
glTranslatef(5, 0, 0);
Итог : Точка нарисуется в точке x=5

glBegin(GL_POINTS);
glVertex3f(0, 0, 0);
glEnd;
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);

Итог : а) Точка нарисуется в x=5,y=0,z=0
б) Точка нарисуется в x=1,y=0,z=0
???????????????????????????????????????????????????

Если я правильно тебя понял:

glTranslatef(5, 0, 0);
glBegin(GL_POINTS);
glVertex3f(0, 0, 0);​
glEnd;

Итог : Точка нарисуется в точке x=5

glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glTranslatef(1, 0, 0);
glBegin(GL_POINTS);
glVertex3f(0, 0, 0);​
glEnd;

Итог : тот же самый (Точка нарисуется в точке x=5)
 

KL9YnEr

Ословед
Пишу сюда, потомучто создовать новую тему не вижу смысла))
На данный момент ищу статьи по OpenAL, нет нет, вы не ослышались, именно openAl(OpenAudioLibrary), короче тоже самое что и OpenGL, только для рендеринга 3Д звука.
Обыскал весь инет, но ниче дельного не нашел(((, есть у меня пара статей, но они тупые до ужоса, без каментариев,просто тупо код, ну может заволялось у кого??? Желательно на Delphi
 

reboot

Ословед
Пишу сюда, потомучто создовать новую тему не вижу смысла))
На данный момент ищу статьи по OpenAL, нет нет, вы не ослышались, именно openAl(OpenAudioLibrary), короче тоже самое что и OpenGL, только для рендеринга 3Д звука.
Обыскал весь инет, но ниче дельного не нашел(((, есть у меня пара статей, но они тупые до ужоса, без каментариев,просто тупо код, ну может заволялось у кого??? Желательно на Delphi

Не знаю есть у тебя вот это или нет, но всё же:
собственно сама библиотека, юнит к ней для Delphi и статейка раскрывающая самые азы использования...
 

KL9YnEr

Ословед
Кстати, все хотел спросить, почему при использовании glRotatef, объекты крутятся не относительно себя а относительно нуля, и если это так и должно быть, то как можно сделать чтобы объект возврщался в свою точку???
Ну или можно както еще легче???
 

KL9YnEr

Ословед
И еще вопрос: Сильно ли чем OpenGL 2.0 отличается от стандартного то бишь 1.0???
И много ли придется переделывать, если я хочу чтобы моя программа, уже довольно таки не маленькая юзала второй гл???
 

reboot

Ословед
Кстати, все хотел спросить, почему при использовании glRotatef, объекты крутятся не относительно себя а относительно нуля, и если это так и должно быть, то как можно сделать чтобы объект возврщался в свою точку???
Ну или можно както еще легче???

Потому что glRotatef поворачивает не объект а систему координат.
Для сброса всех поворачиваний и перемещений системы координат (командами glRotatef и glTranslate) используется команда glLoadIdentity.

На счёт чем отличается 1.0 от 2.0 я не знаю:shuffle:
 

KL9YnEr

Ословед
Потому что glRotatef поворачивает не объект а систему координат.
Для сброса всех поворачиваний и перемещений системы координат (командами glRotatef и glTranslate) используется команда glLoadIdentity.
И куда клепать эту гл_лоадИдентити(до поворота или после???), наскока помню, она четотам сбрасывает матрицы какието)), да??
 

KL9YnEr

Ословед
Кстати, на счет второго гла, впринципе как я понял, все старое осталось без изменений, немного изменилась инициализация, но плюс добавилось много чего нового, теперь для работы с шейдерами, необязательно испоьзовать ВБО
 

reboot

Ословед
И куда клепать эту гл_лоадИдентити(до поворота или после???), наскока помню, она четотам сбрасывает матрицы какието)), да??
Клепай эту команду перед рисованием сцены - не ошибёшься;)
Она именно сбрасывает матрицу отображения (или как она там называется) в дефолт
 

Richard

Ословед
вот че нашел...огл под си шарп)
а то я смотрю тут одни делфинчики сидят))
и два примера от разработчика)
 

reboot

Ословед
На С++ много примерчиков в OpenGL SDK, можете глянуть кто интересуется =))
 

KL9YnEr

Ословед
Такой вопрос :
Почитал парочку статей по выводу шрифтов под OpenGL, и вот, первым действием переменной типа GLuint(Cardinal) присваивается значение вот такой функции
base := glGenLists(224);
А по уничтожению шрифтов
glDeleteLists(base, 224);
Вопрос : зчем нужна это переменная(в нашем случае Base), почему в скобках именно 224, наверно чето в стиле 256-32, т,к первые 32 символа чето не используются чтоли, и что вообще дает эта функция??
 

Neo_S

Ословед
Такой вопрос :
Почитал парочку статей по выводу шрифтов под OpenGL, и вот, первым действием переменной типа GLuint(Cardinal) присваивается значение вот такой функции
base := glGenLists(224);
А по уничтожению шрифтов
glDeleteLists(base, 224);
Вопрос : зчем нужна это переменная(в нашем случае Base), почему в скобках именно 224, наверно чето в стиле 256-32, т,к первые 32 символа чето не используются чтоли, и что вообще дает эта функция??
glGenList(count) - генерирует count пустых диспленйых списков, а в base идентификатор первого из них. glDeleteLists(id, count); - Удаляет count дисплейных списков, начиная со списка с идентификатором id
 

KL9YnEr

Ословед
glGenList(count) - генерирует count пустых диспленйых списков, а в base идентификатор первого из них. glDeleteLists(id, count); - Удаляет count дисплейных списков, начиная со списка с идентификатором id
Тоесть если я в Count поставлю 100, то я смогу одновременно выводить на экран не более 100 надписей, верно???
 

Neo_S

Ословед
Тоесть если я в Count поставлю 100, то я смогу одновременно выводить на экран не более 100 надписей, верно???
Ты неправильно понял. Когда поставишь 100 - то сгенерируется 100 дисплейных списков. Выводить ты их можешь столько, сколько душе угодно.
 

KL9YnEr

Ословед
Вопрос. У меня есть тестура(с прозрачными областями) и альфа тестура(ч/б картинка, где оттенками серого передается уровень прозрачности первой тестуры). Можно ли средствами OpenGL сделать так чтобы читался пиксель из второй текстуры и устанавливалась прозрачность на первой текстуре(на томже самом пикселе)??? если да то в каком направлении копать??
Впринципе тут нужно мультитекстуринг. И юлагодаря этому не обязательно чтобы размеры изображений текстуры и альфа текстуры совпадали, но при мультитекстурировании просто смешиваются цвета, насколько я знаю.(а как сделать чтобы именно прозрачность была??)
 

Neo_S

Ословед
Вопрос. У меня есть тестура(с прозрачными областями) и альфа тестура(ч/б картинка, где оттенками серого передается уровень прозрачности первой тестуры). Можно ли средствами OpenGL сделать так чтобы читался пиксель из второй текстуры и устанавливалась прозрачность на первой текстуре(на томже самом пикселе)??? если да то в каком направлении копать??
Впринципе тут нужно мультитекстуринг. И юлагодаря этому не обязательно чтобы размеры изображений текстуры и альфа текстуры совпадали, но при мультитекстурировании просто смешиваются цвета, насколько я знаю.(а как сделать чтобы именно прозрачность была??)
Из первой текстуры выдирать RGB компоненты, а из второй A коспоненту, ну и потом создать текстуру RGBA. ОпенГЛ сам расчитает прозрачность, не забудь только ее включить ( glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); )
 

KL9YnEr

Ословед
Эммм, вот к прмеру у мну есть 3Д массив array [Tex.Width][Tex.Height][3], тоесть длина на ширину и на 3(R,G,B). Дак вот, при помощи Виндовской функции RGB я могу получить номер этого цвета в формате LongWord(4 байта), а есть ли какаянть функция типа RGBA, которая возвращает уже цвет с уровнем прозрачности?? Или может ктото уже знает формулы??
 

KL9YnEr

Ословед
Все, до самого доперло, если кому надо то вот))
Color := (r or (g shl 8) or (b shl 16) or (a shl 24));
где Color переменная LongWord=Cardinal,
r, g, b, a : составляющие цвета.
 
Сверху