Вопросы OpenGL + C#.
Здесь можно создавать топики для обсуждения каких-либо вопросов OpenGL, Tao Framework, C# не связанные не с одним из уроков.
Вы можете присоединиться к данному блоку, после чего создать в нем новую ветку обсуждения.
Администраторы (1):
Anvi
Модераторы (0):
Модераторов здесь не замечено
Читатели (34):
isaer
Alexei16
Hirsah
GLarus
KinsT
ZaoTin
Flashhell
tat-besidovska
spirt
Divanario
OniKy
pyatka
TaoOpenGLister
Tanya
darkx
kolianovich
FromTula
garnett91
pashtetus1
vetosnal
Hale_32bit
Megadino
Sm1le
norman
IvanS
-nad-
noname
alex07
Zedthi
ProCoder
Peshexod
cerf
St_cross
Vlad
Доброго времени суток.
Возникла потребность в создании генератора текстурных координат. Предположим, существует набор вершин произвольного трёхмерного объекта, сложной формы. Так при загрузке или создании подобного объекта, а быть может прямо во время его отрисовки, было бы здорово рассчитать текстурные координаты. Основной проблемой является определение коэффициента масштабирования.
Читать дальше
Всем доброго времени суток
Сейчас сломалась подзарядка для ноута и делать нечего и решил сделать структуру своего движка, пока ее рисовал придумал фишку для GUI но не знаю как ее реализовать
вся суть в том что мне нужно достать из файла то что должно произойти, например в файле написано
[click]
exit
и как только прога увидела что при нажатии должно произойти exit то закрыть
но как узнать что там за команда??
не сравнивать же со всеми надписями которые там будут
команды будут
open — exit
set — там где будет — то там написать что нужно будет открыть или установить
возможно будут еще какие либо команды
помогите такое вот реализовать а то нету у меня идей больше как кроме сравнения
-
+1
- isaer
- 08 марта 2011, 14:41
Есть сцена с несколькими сферами. Необходимо по клику на сфере менять ее цвет.
В 3D новичок и глубоко погружаться времени нету.
Наткнулся на статью:
opengl.gamedev.ru/articles/?id=101
Переписал, получаю координаты отрезка.
Вопрос, что дальше с ними делать -как выделить сферу? Если можно с примерами:)
Заранее огромное спасибо!
У меня есть сетка. Как можно определять координаты при кликаньи мыши на одну из ячеек?
У меня есть 3d объект(танк), который загружен в OpenGL. Загружено отдельно башня и остальная часть. Подскажите пожалуйста как сделать так чтобы башня(с танка) поворачивалась в определенную точку в пространстве или подскажите как просчитать матрицу поворота?
-
+3
- Tanya
- 30 января 2011, 22:00
Попробовал использовать Glut.glutMainLoop(). До этого задаю
Glut.glutDisplayFunc(RenderScene);
Glut.glutReshapeFunc(ChangeSize);
Программа виснет.
Никто не сталкивался?
Чтоб при разворачивании формы, размеры SimpleOpenGLСontrol менялись тоже?
Они описаны в gl.h. Как возможно подключить gl.h?
#define GL_POINTS 0x0000
#define GL_LINES 0x0001
#define GL_LINE_LOOP 0x0002
#define GL_LINE_STRIP 0x0003
#define GL_TRIANGLES 0x0004
#define GL_TRIANGLE_STRIP 0x0005
#define GL_TRIANGLE_FAN 0x0006
#define GL_QUADS 0x0007
#define GL_QUAD_STRIP 0x0008
#define GL_POLYGON 0x0009
Можно в принципе цифры писать, но код будет не читабельный. Кто с этим сталкивался?
Возможно не совсем корректно задан вопрос, я постараюсь разъяснить. Есть 3D объект, например чайник, я подношу мышку к носику, необходимо выделить носик, если к ручке то ручку и т.д.
-
+1
- pyatka
- 11 января 2011, 17:30
Читая умные книжки я обнаружил, что там говорится о первом. А именно Gl.glTranslate(), Gl.glRotate(), Gl.glScale() изменяют именно сам объект, а за обзор на него (а точнее — на всю сцену) ответственна функция Glu.gluLookAt(). Потому что первые три преобразуют видовую матрицу, домножая её на соответствующую матрицу преобразований (автоматически внутри этих функций), а потом уже при визуализации координаты каждой точки домножаются на модернизированную видовую матрицу, поэтому эти функции изменяют положение, поворот и масштаб объектов, рисуемых при использовании модернизированной ими видовой матрицы. Glu.gluLookAt() — определяет именно положение камеры наблюдателя: первые три параметра — координаты точки наблюдения (КАМЕРЫ), вторые — центр сцены ВСЕЙ, которая будет проецироваться в центр области вывода, а третие — задают вектор положительного направления оси «У» у ВСЕЙ сцены при проецировании. Таким образом эта команда как бы совершает преобразование всех объектов сцены в целом. Её целесообразно использовать до определения и преобразования всех объектов сцены, пока видовая матрица единичная.
Какие мысли? Просто в уроках OpenGl+C# написано наоборот, вот я и задался вопросом)))
Есть ф-ия 2 порядка(3д кривая) надо как то её отобразить С помощью каких методов можно сделать такое?
-
+4
- rembo
- 30 ноября 2010, 18:18
можно ли как то распечатать содержимое simpleopenglcontrol?
можно ли как то сохранить содержимое simpleopenglcontrol в фаил?
-
0
- rembo
- 23 октября 2010, 23:22
вот тут сетка
хочу подобную сделать.
// стартуем отрисовку в режиме визуализации точек
// объединяемых в линии (GL_LINE_STRIP)
Gl.glBegin(Gl.GL_LINE_STRIP);
// рисуем начальную точку
// Gl.glVertex2d(GrapValuesArray[0, 0], GrapValuesArray[0, 1]);
// проходим по массиву с координатами вычисленных точек
for (int ax = 0; ax < 5; ax++)
{
for (int ay = 0; ay < 5; ay++){
// передаем в OpenGL информацию о вершине, участвующей в построении линий
Gl.glVertex2d(ax , ay );
}
}
// завершаем режим рисования
Gl.glEnd();
Делаю так, по логике он должен нарисовать квадрат.
glVertex2d рисует же точку? Но почему то получается такое:

что не так делаю?
-
0
- rembo
- 23 октября 2010, 18:36
Возможно вопрос дурацкий, но я сообразить не могу.
Вот есть цилиндр. Мы его строим так:
void glutSolidCylinder ( GLdouble radius,
GLdouble height,
GLint slices,
GLint stacks
)
Draw a solid cylinder.
Parameters:
radius Radius of the cylinder.
height Z height.
slices Divisions around z axis.
stacks Divisions along z axis.
radius это радиус. height высота. 2 других параметра не совсем ясно зачем. Если дословно переводить, то деление вокруг оси z и деление вдоль оси z.
Нашел в уроке про трансформации
Glut.glutSolidCylinder(1,2,32,32);
1,2 это что в пикселях? Как бы это же не реально. Мне надо как-то понять сколько пикселей высота и радиус у него.
спасибо
-
0
- rembo
- 23 октября 2010, 16:31
читаю
http://www.esate.ru/page/initsializatsiya-opengl-v-c-sharp
И немного решил поиграться с
Gl.glRotated(antX, antY, antZ, 0);
немного не понимаю как она крутиться. Запутался.
Скажите как грамотно модернизировать
// обработчик кнопки "визуализировать"
private void button1_Click(object sender, EventArgs e)
{
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glLoadIdentity();
Gl.glColor3f(1.0f, 0, 0);
Gl.glPushMatrix();
Gl.glTranslated(0,0,-6);
Gl.glRotated(45, 1, 1, 0);
// рисуем сферу с помощью библиотеки FreeGLUT
Glut.glutWireSphere(2, 32, 32);
Gl.glPopMatrix();
Gl.glFlush();
AnT.Invalidate();
}
чтобы ещё рисовались оси (xyz).
Спасибо
-
+1
- rembo
- 22 октября 2010, 22:22
Предположим у вас на форме есть кнопка. По её нажатию строиться сложная фигура, н-р чайник.
Есть 2-ая кнопка. По её нажатию надо нарисовать проекцию этой сложной фигуры.
Не подскажите как?
-
+1
- rembo
- 21 октября 2010, 21:48
Никогда не программировала в 3D. В основном базы данных в Visual Studio. Тут приходит начальник и говорит. Хочу такую программу: ща опишу, как смогу.
Значит, есть у меня предположим палуба на корабле, определенного размера. На нее можно загрузить груз определенного размера и веса. Так вот он хочет к примеру ввести высоту, ширину и вес груза, получить фигуру по введенным данным, покрутить ее во все стороны и поставить ее на палубу, ухватив мышкой. Ну и таким образом заставить всю палубу. Не могу понять, с чего начать. Могу ли я реализовать всю эту красоту в Visual Studio. Знаю C#,VB. Заранее спасибо
Здравствуйте, поробовал переделать программу из руководства по программированию без корректной реакции на изменение размеров окна, но на экран ничего не выводится: он даже не очищается в заданный цвет. В чем может быть проблема?
Читать дальше
-
0
- ZaoTin
- 29 августа 2010, 00:44
Всем добрый день!
Вопрос состоит в следующем: нужно узнать реальные размеры (РР) нарисованного на экране (скажем диаметр сферы), как это сделать?
Читать дальше
-
+1
- KinsT
- 23 августа 2010, 15:58
Доброго времени суток!
С OpenGL разбираюсь около года. Всегда появляется одна и та же проблема — при большом количестве рисуемых объектов происходит ну просто МХАТовская пауза. Искал выход в дисплейных списках и массивах вершин, но как с ними нормально работать так и не понял.
Читать дальше
-
+1
- KinsT
- 03 августа 2010, 22:54
Необходимо создать меш из готового набора точек. Я делал это под DX, но как сделать в GL не имею понятия, кто реализовывал или кто знает как это сделать, подскажите плиз. Заранее спасибо :)