+16.58

avatar Вопросы OpenGL + C#.

Здесь можно создавать топики для обсуждения каких-либо вопросов OpenGL, Tao Framework, C# не связанные не с одним из уроков.



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

Администраторы (1): Anvi
Модераторы (0): Модераторов здесь не замечено
Читатели (31): 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

Вопросы OpenGL + C#.TAO+SimpleGLControl реагирует на мышь и клаву чередованием кадров

Друзья, подскажите плиз в чем дело. Значит вот у меня в форме SimpleGLControl. При движении по нему мышью или нажатии клавиш клавиатуры начинается чередование предыдущего и текущего кадров. Можно ли как то побороть сий недуг?

Вопросы OpenGL + C#.Какой игровой движок будет предпочтительнее?

Какой игровой движок будет предпочтительнее?

Привет Всем!

Хотел узнать, какой игровой движок лучше изучать/использовать. Я знаю основы OpenGL вплоть до некоторых возможностей OpenGL 2.0 без шейдеров, написал пару очень простых игр, шахматы с немного недоделанным и туповатым ИИ, змейку, и типо астеройд. Писал на C++ используя GLUT или freeglut, GLEW, audiostate.
Теперь хочу написать что нибудь посерьезнее и поинтереснее, но никак не могу решиться — изучать, и еще раз изучать API какого-то бесплатного движка.

К примеру:

Run3, Delta3D, Unity, Crystal Space, clanlib, Cube 2
Или же писать чисто по игре как делал раньше, на чистом GL. Или все таки написать примитивный движок для моих целей, конкретного жанра.
Просто взглянув на референсы и екземплы(простые) движков я увидел, что там кода не на много меньше, чем я бы писал на чистом OGL. При том, что делает код не совсем ясно, и мне кажется, что я долго буду изучать любой двиг. И хотелось бы либо помучатся и изучить какой нить не плохой, халявный двиг, чтоб в преть им и пользоваться. Либо всетаки не мучатся с изучением не привычных вещей и продолжить изучать OGL и писать либо свой примитивный двиг, либо писать на чистом OGL для конкретных целей, жанра.
Сразу уточню, меня больше интересуют маленькие, простые игры, казуалки.
Хотелось бы продвинуться в игростроении, но какой путь избрать? Зависеть от движка, или же от собственных знаний?! И так ли двиг упрощает разработку простых игр???
Что можете подсказать?
  • +1
  • darkx
  • 13 ноября 2011, 20:17

Вопросы OpenGL + C#.Кто есть на сайте?

Кто есть на сайте?

Где админ??!!

Кто хочет поддержать проект уроками?(даже если не может)

ЕСТЬ КТО ЖИВОЙ!?

Сайт мертв?

  • +1
  • darkx
  • 03 ноября 2011, 23:12

Вопросы OpenGL + C#.Привет всем!!

Кто хочет по участвовать в коллективном проекте??

Мы, группа энтузиастов, приглашаем Вас принять участие в создании стартового проекта однопользовательской, безбашанной игре с элементами экшена, стратегии, фантастики и Tower Defence! Под названием Tracks&Guns.
Eсли вы желаете принять участие для себя или же просто ради опыта, то можете попробовать попрактиковаться в 3D\\2D графике, программировании то мы с радостью приглашаем Вас в свою команду! У нас уже есть много собственных наработок, но мы всегда готовы для свежих идей!
Используемый движок Unity 3D.
Контактное лицо — Руслан.
Skype: Zionter.
E-mail: Ziont.2009@gmail.com
  • +2
  • Zedthi
  • 31 октября 2011, 01:07

Вопросы OpenGL + C#.Анонс урока

ой, 3 дня решался написать анонс, вот решился =))
хочу сделать урок по созданию… хм… змейки?
угу змейки, все ее смогут написать, но все же, для новичков все таки подайдет, и еще хочу узнать про мою организацию кода да и вобще просто хочу написать что нить.
буду писать на чистом OGL и C++ больше ничего
вот не знаю, делать как в виде витдео урока или текстового

игра там вобще легкая, так что все будет в 1 cpp файле, так что не особо много, уловить все просто помоему будет, не хочу заморачиваться с гиганским кодом, так как сейчас уже испробовал писать все гиганско с двигом, получается очень громоздко и много ненужного

видео:
+ нет граматических ошибок
+ нет тупой ненужной информации
+ более понятно объяснено
+ наглядно
+ делается быстрее

— возможны проблемы со звуком
— какая нить хрень с видео (типа плохого качества)
— весит все таки много
— какие нить посторонние звуки
— затупы

текст:

+ весит мало
+ нет звуков
+ нет затупов

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

ну вот, выбирайте как делать, урок буду делать после того как допишу игру которую сейчас дописываю
  • +1
  • isaer
  • 27 сентября 2011, 23:09

Вопросы OpenGL + C#.Мерцание с последующим падением видеодрайвера при использовании glDrawElements

Честно говоря, впервые использую VBO и, возможно, поэтому не вижу причину ошибки. Лишь закомментировав glDrawElements, я не наблюдаю мерцаний на экране, иначе мерцает не только окно приложения, но и вся остальная область экрана, затем падает видеодрайвер. В чём может быть ошибка?

Код такой:


            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();

            Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, bufs[0]);
            Gl.glColorPointer(4, Gl.GL_FLOAT, 0, 0);
            
            Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, bufs[1]);
            Gl.glVertexPointer(3, Gl.GL_FLOAT, 0, 0);

            Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, bufs[2]);
            Gl.glNormalPointer(Gl.GL_FLOAT, 0, 0);

            Gl.glBindBuffer(Gl.GL_ELEMENT_ARRAY_BUFFER, bufs[3]);

            Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
            Gl.glEnableClientState(Gl.GL_COLOR_ARRAY);
            Gl.glEnableClientState(Gl.GL_NORMAL_ARRAY);

            Gl.glDrawElements(Gl.GL_TRIANGLES,   
            ElementData.Length,Gl.GL_UNSIGNED_INT, 0);//!!!!

            Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
            Gl.glDisableClientState(Gl.GL_COLOR_ARRAY);
            Gl.glDisableClientState(Gl.GL_NORMAL_ARRAY);
            
            OpenGlControl.Invalidate();
  • +1
  • GLarus
  • 22 сентября 2011, 01:41

Вопросы OpenGL + C#.Как бы вы изменили сайт?

Не разделы и контент, а именно сайт. Просто уже была тема, но что-то ни к чему не пришли.

1. Мне кажется многие были бы «за» форум, привязанный к личным и коллективным блогам.

2. Может сайту пойдут на пользу закрытые разделы (доступ к ним можно будет получить за высокий рейтинг или за платные статусы)? Это бы способствовало развитию проекта (ну хотя бы стимулировало бы его)?
Больше статусов и групп? Платный контент (доступ только по статусу или за платное членство в группе)?
Есть мнения на этот счет?

3. Стали бы вы писать в закрытые разделы публикации за деньги? Или за процент от оплаченных статусов? Сколько вы считаете приемлемым?

4. Вообще нужны сайту социальные функции или нет? Если бы они расширились — это нужно вообще (в сторону социальных сетей).

5. Какие бы права на сайте вы бы расширили, чтобы изменили, чтобы улучшили?

P.S. топик запакостил в блог с самым большим числом подписчиков..
  • +2
  • noname
  • 16 сентября 2011, 00:44

Вопросы OpenGL + C#.Предложения по улучшению сайта

Давайте писать предложения которые по вашему мнению улучшат сайт, и сделают так что бы тут все «ожило».
Пишите в коментах, если действительно стоещее то попадет в список.
Будем надеятся что Anvi посмотрит)

Читать дальше

Вопросы OpenGL + C#.видимость полигона или вершины

Здравствуйте!
Хочу узнать, есть ли процедура, с помощью которой в OpenGl можно определить отображается полигон или вершина в данный момент на экране или нет?
Это мне нужно для определения проекции сцены на направление наблюдения. Или посоветуйте, если есть какой-то более простой способ.
Заранее спасибо!
  • +2
  • -nad-
  • 19 июля 2011, 17:52

Вопросы OpenGL + C#.Проблемы с полноэкранным режимом

Все привет!

Начал писать свою программку, и в самом начале столкнулся с проблемой.
В чем суть — есть сфера, она перемещается по экрану туда-сюда. Когда приложение запущено не в полноэкранном режиме, то все хорошо, но как только переходишь в full screen изображение как бы состоит из нескольких разных кадров, разрезанных по горизонтали и скрепленных вместе. При том, если вызвать диспетчер задач поверх приложения, то все опять работает нормально.
В чем может быть проблема?

Заранее спасибо!
  • 0
  • IvanS
  • 11 июня 2011, 21:31

Вопросы OpenGL + C#.Stencil буфер

Всем привет.
Сталкнулся с такой траблой: не хочет работать stencil. Вроде все правильно делаю.

Инициализация
private void InitGL()
{
float[] pos = { 3, 3, 3, 1 };
float[] dir = { -1, -1, -1 };

float[] mat_specular = { 1, 1, 1, 1 };

Gl.glEnable(Gl.GL_DEPTH_TEST);

Gl.glEnable(Gl.GL_COLOR_MATERIAL);

Gl.glEnable(Gl.GL_LIGHTING);
Gl.glEnable(Gl.GL_LIGHT0);

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

Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, mat_specular);
Gl.glMaterialf(Gl.GL_FRONT, Gl.GL_SHININESS, 128.0f);

Glut.glutInit();

ResizeGL();
}

private void ResizeGL()
{
Gl.glViewport(0, 0, OGLC.Width, OGLC.Height);
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Gl.glOrtho(-5, 5, -5, 5, 2, 12);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
}

private void Display()
{

Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT | Gl.GL_STENCIL_BUFFER_BIT);
Gl.glLoadIdentity();
Glu.gluLookAt(0, 0, 5, 0, 0, 0, 0, 1, 0);

// вращаем сцену
Gl.glRotated(45, 1, 0, 0);
Gl.glRotated(45, 0, 1, 0);
Gl.glRotated(45, 0, 0, 1);

// разрешаем тест трафарета
Gl.glEnable(Gl.GL_STENCIL_TEST);

// рисуем куб и заполняем буффер трафарета единицами
// в том месте, где рисуется куб
Gl.glStencilFunc(Gl.GL_ALWAYS, 1, 0);
Gl.glStencilOp(Gl.GL_KEEP, Gl.GL_KEEP, Gl.GL_REPLACE);
Glut.glutSolidCube(2.5);
// заполняем буффер трафарета двойками
// в том месте, где сфера закрывает куб
Gl.glStencilFunc(Gl.GL_ALWAYS, 2, 0);
Gl.glStencilOp(Gl.GL_KEEP, Gl.GL_KEEP, Gl.GL_REPLACE);
Glut.glutSolidSphere(1.5, 20, 20);

// очищаем буфферы цвета и глубины
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glStencilFunc(Gl.GL_EQUAL, 2, 255);
Gl.glColor3d(1, 1, 1);
Glut.glutSolidCube(2.5);

OGLC.Invalidate();
}

OGLC — сам элемент

Вопросы OpenGL + C#.TAo и Nvidia: скачут кадры

Здравствуйте! Столкнулся с тем что на видеокартах Nvidia, после рисования точки(то есть после щелчка по окну и срабатывания функции рисования) точка повяляется на текущем кадре. Если щёлкаем ещё раз, то изображение появляется уже на пустом кадре… И так чередуется. На встроенной видеокарте Intel 946gz всё нормально. Причём на Geforce пробовал на разных и 9600 и 8600…

Вот сам проект, там щёлкаем на карандаш и пробуем нарисовать:
cid-2583f3fafd6afb42.skydrive.live.com/self.aspx/.SharedFavorites/dIIIplom.zip
  • 0
  • Sm1le
  • 01 июня 2011, 20:50

Вопросы OpenGL + C#.Сколько весят библиотеки?

Я установил Tao Framework и вижу 8Мб + 15Мб библиотек без которых ничего не будет работать. Подскажите пожалуйста сразу чтобы я мог оценить сколько весят отдельные части.

1) Сколько в среднем требуется Мб библиотек Tao чтобы написать 3D игру?
2) ...2D игру?
3)… без звука?
4)… без физики?
4)… без шейдеров?

Вопросы OpenGL + C#.Вопрос по текстурам

Возникла такая проблема с текстурами
DialogResult res = openFileDialog1.ShowDialog();
            
            // создаем изображение с индификатором imageId
            Il.ilGenImages(1, out imageId);
            // делаем изображение текущим
            Il.ilBindImage(imageId);
                      

            //загрузка изображения
            Il.ilLoadImage("123.jpg");

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

Вопросы OpenGL + C#.Как отрисовывать сцены в двух разных контролах ?

В одном SimpleOpenGlControl рисуется непосредственно 3d сцена, необходимо ещё один SimpleOpenGlControl для отрисовки в нём графика изменения некоторой величины. затруднительно рисовать график в том же окне. Сейчас получается, что окно в котором будет отрисовываться сцена определяется последним вводом команды InitializeContexts

SimpleOpenGlControl GLCGraph,Vid;

GLCGraph.InitializeContexts();
Vid.InitializeContexts();

так отрисовка будет в окне Vid

Vid.InitializeContexts();
 GLCGraph.InitializeContexts();

так в GLCGraph

Vid.InitializeContexts();
 GLCGraph.InitializeContexts();
 Vid.InitializeContexts();

так тоже сцена рисуется в Vid
причём одновременно в двух окнах хотябы одинаковое изображение рисоваться не хочет. Как сделать так чтобы вторая сцена рисовалась одновременно с первой, только в другом SimpleOpenGlControl'е??

Вопросы OpenGL + C#.Градиент в OpenGL

Всем-всем, добрый день!!!
Есть у меня одна простая задача, которая не решается почти год (не могу сказать, что я этим горжусь :)
Нужно нарисовать КРУГ так, чтобы центр был светлым, а ближе к краям цвет плавно изменялся вплоть до черного (Рис.1)
Градиент от центра к краям
Рис.1 Окружность залитая монохромным градиентом

И все хорошо если круг такого же размера как и на Рис.1, но как только размер увеличивается или же уменьшается контраст между центром и краями, то выплывают самые некрасивые вещи…
Читать дальше

Вопросы OpenGL + C#.Нормально перехватываение клавиш

Всем привет
Вот сижу и думаю как же сделать нормальный перехват клавиш, проблема состоит в том, что если нажимать на клавишу и проверять нажата она или нет, ну например:

if(keyUP == 1)
{
predmetup();
}

то получается что это действие будет происходить много много раз пока не отпустить клавишу, вроде нормально, как и хочем, НО если нам нужно при нажатии сделать одно это действие и все, больше ничего то не выйдет, оно повторится много раз, так как перехват событий идет не так, он заметил что нажата и начинает выполнять. но пройдет пару сек и выполниться несколько раз, а нам нужно только один, как сделать так что бы хоть сколько жми а оно все равно один раз зделалось и ничего больше не делало.

Всякие брэйки, или подобные действия не подойдут, так как у меня ситуация такая:

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

надеюсь понятно объяснил что я хочу сделать
  • 0
  • isaer
  • 02 апреля 2011, 19:50

Вопросы OpenGL + C#.Есть маленькая идея

Сидел я тут сидел, и надумал идею прикольную, думаю многим понравится, ну или должна)))

Идея сделать свой журнал, назовем его… придумаем как назовем…

Наберем 3-4 редактора, дизайнера
и будем писать, журналы выпускать, журнал в месяц я думаю нормально, все успеют написать.

Кому понравилась идея и хочет быть участником то подпишите пост ниже

Вопросы OpenGL + C#.Кто знает, эффективно выводить текст в SimpleOpenGLControl средсвами Tao?

В моей проге, которую я пишу с помощью Tao, нужно рисовать 2D текст. Насколько я понял задача эта вовсе не тривиальная.

Необходимо чтобы я мог задавать шрифт, размер, цвет и язык вывода (мне нужна кириллица). То есть библиотека freeGlut здесь не подойдет (на сколько я понял из урока 5.4 там очень ограниченный набор шрифтов и невозможность использовать кириллицу). Вот тут и начались мои google мытарства. В итоге после многих часов поиска я не обнаружил ни одного внятного способа вывода текста в SimpleOpenGLControl.

Думаю каждому из нас это может понадобиться, поэтому надо основательно разобраться. Вот, например, в Tao есть FreeType. Но, как ей пользоваться? Ни толкового примера найдено не было…

Буду премного благодарен за разъяснение этого вопроса…

Вопросы OpenGL + C#.Событие перетаскавание

Как сделать событие перетаскивание? Т.е уменя нарисован кубик, я нажимаю левую кнопку мыши и передвигаю мышь, то объект должен вращаться.

Что-то написал. Но почему-то сразу же выходит после запуска программы.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
// для работы с библиотекой OpenGL 
using Tao.OpenGl;
// для работы с библиотекой FreeGLUT 
using Tao.FreeGlut;
// для работы с элементом управления SimpleOpenGLControl 
using Tao.Platform.Windows;

namespace View3D
{
    public partial class Form1 : Form
    {
        int x, y;
        double AlphaX,AlphaY;
        bool MouseIsDown;
        public Form1()
        {
            AlphaX = 45;
            AlphaY = 45;
            
            InitializeComponent();
            AnT.InitializeContexts();

            Init();
            Draw();
            
            Gl.glFlush();
            AnT.Invalidate();
        }

        private void Init()
        {
            Glut.glutInit();
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
            Gl.glClearColor(0, 0, 0, 1);
            Gl.glViewport(0, 0, AnT.Width, AnT.Height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Glu.gluLookAt(10, 10, 10, 0, 0, 0, 0, 0, 1); 
        }

        private void Draw()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glLoadIdentity();
            Gl.glColor3f(1, 1, 1);
            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, -6);
            Gl.glRotated(AlphaX, 1, 0, 0);
            Gl.glRotated(AlphaY, 0, 1, 0);

            Glut.glutWireCube(2);
            Gl.glColor3f(1, 0, 0);

            DrawAxes(0.5);
            Gl.glPopMatrix();
        }
        private void DrawAxes(double Length)
        {
            Gl.glColor3f(1, 0, 0);
            Gl.glBegin(Gl.GL_LINES);
                Gl.glVertex3d(0,0,0);
                Gl.glVertex3d(Length, 0, 0);
            Gl.glEnd();
            Gl.glColor3f(0, 1, 0);
            Gl.glBegin(Gl.GL_LINES);
                Gl.glVertex3d(0, 0, 0);
                Gl.glVertex3d(0, Length, 0);
            Gl.glEnd();
            Gl.glColor3f(0, 0, 1);
            Gl.glBegin(Gl.GL_LINES);
                Gl.glVertex3d(0, 0, 0);
                Gl.glVertex3d(0, 0, Length);
            Gl.glEnd();
        }

        private void AnT_DragDrop(object sender, DragEventArgs e)
        {
            
        }

        private void AnT_MouseDown_1(object sender, MouseEventArgs e)
        {
            x = e.X;
            y = e.Y;
            MouseIsDown = true;
        }

        private void AnT_MouseUp_1(object sender, MouseEventArgs e)
        {
            MouseIsDown = false;
        }

        private void AnT_MouseMove_1(object sender, MouseEventArgs e)
        {
            if (MouseIsDown)
            {
                AlphaX += Convert.ToDouble(x - e.X);
                AlphaY += Convert.ToDouble(y - e.Y);
                x = e.X;
                y = e.Y;
                Init();
                Draw();
            }
        }
    }
}

Вопросы OpenGL + C#.Вычисление текстурных координат

Доброго времени суток.
Возникла потребность в создании генератора текстурных координат. Предположим, существует набор вершин произвольного трёхмерного объекта, сложной формы. Так при загрузке или создании подобного объекта, а быть может прямо во время его отрисовки, было бы здорово рассчитать текстурные координаты. Основной проблемой является определение коэффициента масштабирования.

Читать дальше

Вопросы OpenGL + C#.Обработка файлов

Всем доброго времени суток
Сейчас сломалась подзарядка для ноута и делать нечего и решил сделать структуру своего движка, пока ее рисовал придумал фишку для GUI но не знаю как ее реализовать

вся суть в том что мне нужно достать из файла то что должно произойти, например в файле написано

[click]
exit

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

помогите такое вот реализовать а то нету у меня идей больше как кроме сравнения

Вопросы OpenGL + C#.Выделение объекта мышью в 3D сцене

Есть сцена с несколькими сферами. Необходимо по клику на сфере менять ее цвет.
В 3D новичок и глубоко погружаться времени нету.
Наткнулся на статью: opengl.gamedev.ru/articles/?id=101
Переписал, получаю координаты отрезка.
Вопрос, что дальше с ними делать -как выделить сферу? Если можно с примерами:)

Заранее огромное спасибо!

Вопросы OpenGL + C#.координаты мыши на объекте opengl

У меня есть сетка. Как можно определять координаты при кликаньи мыши на одну из ячеек?

Вопросы OpenGL + C#.Перетекание цвета

Как сделать вот такую штуку
img3.imageshack.us/img3/1230/90289944.png
чтоб каждому значению соответствовало значение