Блог им. ProCoderУ нас появились поклонники.

Нас пиарят, но в тоже время копирайтят, хоть и с указанием на источник.

www.big-dump.co.de/viewforum.php?f=75

Блог им. ProCoderОтправка писем.

Здравствуйте.

Как-то очень давно мне нужно было сделать в своей программе отправку отчета об ошибке мне на мыло.

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

Блог им. ElenaNovihokПомогите разобратьте

Здравствуйте.Я новичок.Подскажите, кто знает как в этом уроке www.render.ru/books/show_book.php?book_id=414 двигать по высоте сегменты полигональной сетки (второй шаг, сразу после слов «Затем надо полученный объект преобразовать в полигональную сетку. После чего перейдите на подуровень Vertex и переместите 2 средних ряда вершин как у меня на рисунке»? А также, как выделять полигоны цельной выдавленной фигуры (следующий шаг) Буду очень признательна)))

Блог им. ProCoderИгровой движок

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

Спасибо вашему сайту за загрузчик моделей ASE.

Дополняйте, оценевайте, неругайтесь.

Буду благодарен за помощь в развитии проекта.
Читать дальше

Блог им. ProCoderЗвук в игре C#

Ну что тут скажешь. Например нам нужно чтобы когда пользователь нажимал на ЛКМ был слышан выстрел.
Читать дальше

Блог им. isaerSnake

ну вот собственно и игра =)
вот только у меня сломан микрофон, так что никак не могу все эт дело заснять так что выложу код и архив в бинарником
Читать дальше
  • +1
  • isaer
  • 26 ноября 2011, 16:00

Блог им. alex07Готовый проект

Подскажите, пожалуйста, как скачать готовый проект?
  • -1
  • alex07
  • 15 октября 2011, 18:32

Блог им. ReverbНе работает альфа-канал (

Указал режим дисплея RGBA:

Glut.glutInitDisplayMode(Glut.GLUT_RGBA | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);

Далее пишу:

Gl.glLineWidth(10);
Gl.glColor4f(1, 0, 0, 0.1f);
Gl.glBegin(Gl.GL_LINE_STRIP);
Gl.glVertex2d(lineX, 0);
Gl.glVertex2d(lineX, lineY — 0.5);
Gl.glEnd();
Gl.glBegin(Gl.GL_LINE_STRIP);
Gl.glVertex2d(0, lineY);
Gl.glVertex2d(lineX — 0.5, lineY);
Gl.glEnd();
Gl.glLineWidth(1);

В релузьтате все рисуется, но без альфа-канала((

Блог им. DeKaNРусский текст

Всем привет. У меня возникла проблема. Необходимо вывести русский текст на экран. Никто не сталкивался с этим???

Блог им. DeKaNГраница QUADS

Всем привет. Мне опять нужна помощь))
Я столкнулся со следующей проблемой… я рисую сетку из прямоугольников, и на каждый меш накладываю текстуру… Если буду рисовать GL_QUAD_STRIP, то всё хорошо, но если просто GL_QUADS, то границы стаовятся видными.

Как мне исправить это??? Пробовал
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);

Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_CLAMP_TO_EDGE);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_CLAMP_TO_EDGE);

не помогло.

Блог им. DeKaNКоординаты OpenGL

Всем привет. Я понимаю то это заезженная тема, но у меня есть проблема… Вопрос следующий:
Мне нужно перевести координаты WinForm в координаты GL… я это сделал, но есть косяк, а именно, узнаю координаты верхнего правого угла и правого нижнего угла:
Point3D P1 = ConvertP(new Point(AnT.Width, 0), Z);
Point3D P2 = ConvertP(new Point(AnT.Width, AnT.Height), Z);

где Z — радиус вектор (т.е. расстояние от начала координат до нашей точки). парадокс в том, что координаты p1.X != p2.X, и координаты p1.Y !=p2.Y… Расхождение по X небольшое (начинается с тысячных)… оно меня не волнует так как расхождение по Y (в сотых) т.е например p1.Y=3.508...., а p2.Y=3.538…
В чем может быть проблема?

вот код:
public static Point3D ConvertP(Point p, double inZ)
        {
            Point3D P1, P2, Dir;
            double x, y, z;

            int vx = p.X, vy = AnTH - p.Y - 1;
            int[] viewport = new int[4];
            double[] projection = new double[16];
            double[] modelview = new double[16];
            Gl.glGetIntegerv(Gl.GL_VIEWPORT, viewport);
            Gl.glGetDoublev(Gl.GL_PROJECTION_MATRIX, projection);
            Gl.glGetDoublev(Gl.GL_MODELVIEW_MATRIX, modelview);
            int[] zz = new int[1];
            Gl.glReadPixels(vx, vy, 1, 1, Gl.GL_DEPTH_COMPONENT, Gl.GL_FLOAT, zz);
            Glu.gluUnProject(vx, vy, 0, modelview, projection, viewport, out x, out y, out z);
            P1 = new Point3D(x, y, z);
            Glu.gluUnProject(vx, vy, 1, modelview, projection, viewport, out x, out y, out z);
            P2 = new Point3D(x, y, z);
            Dir = new Point3D();
            Dir = P1 - P2;
            Dir.Normalize();

            Point3D A = new Point3D(0, 0, 2 * P1.Z + inZ);
            Point3D n = new Point3D(0, 0, -1);
            double t = n * (A - P1);
            Point3D P = P1 + t * Dir;
            double R = Math.Sqrt(P.X * P.X + P.Y * P.Y + P.Z * P.Z);
            double addz = 0;
            while (Math.Abs(R - inZ) > 0.00001)
            {
                double add= Math.Abs(R - inZ);
                if (R > inZ) addz -= add;
                else addz += add;
                A = new Point3D(0, 0, 2 * P1.Z + inZ + addz);
                n = new Point3D(0, 0, -1);
                t = n * (A - P1);
                P = P1 + t * Dir;
                R = Math.Sqrt(P.X * P.X + P.Y * P.Y + P.Z * P.Z);
            }
            return P;
        }

Ну а Point3D это вектор:
class Point3D
    {
        public double X, Y, Z;
        public Point3D()
        {
            this.X = 0;
            this.Y = 0;
            this.Z = 0;
        }
        public Point3D(double X, double Y, double Z)
        {
            this.X = X;
            this.Y = Y;
            this.Z = Z;
        }

        public void Normalize()
        {
            double Lenght = Math.Sqrt(X * X + Y * Y + Z * Z);
            this.X /= Lenght;
            this.Y /= Lenght;
            this.Z /= Lenght;
        }

        #region Перегрузка операторов
        public static Point3D operator +(Point3D P1, Point3D P2)
        {
            Point3D tmp = new Point3D();
            tmp.X = P1.X + P2.X;
            tmp.Y = P1.Y + P2.Y;
            tmp.Z = P1.Z + P2.Z;
            return tmp;
        }
        public static Point3D operator -(Point3D P1, Point3D P2)
        {
            Point3D tmp = new Point3D();
            tmp.X = P1.X - P2.X;
            tmp.Y = P1.Y - P2.Y;
            tmp.Z = P1.Z - P2.Z;
            return tmp;
        }
        public static double operator *(Point3D P1, Point3D P2)
        {
            return P1.X * P2.X + P1.Y * P2.Y + P1.Z * P2.Z;
        }
        public static Point3D operator *(double D, Point3D P)
        {

            Point3D tmp = new Point3D();
            tmp.X = P.X * D;
            tmp.Y = P.Y * D;
            tmp.Z = P.Z * D;
            return tmp;
        }
        #endregion
    }
  • 0
  • DeKaN
  • 18 марта 2011, 06:45

Блог им. TaoOpenGListerСоздание грида физичеких величин

Задумал создать визуализатор.


Буду писать потихоньку. Надеюсь на помошь советами.

Пусть для начала будем считать что грид состит из кубов.
Создаем класс одного кубика

    class Cubic
    {
        public double x, y, z,size,r,g,b;
        public Cubic(double x, double y, double z)
        {

        }
        public void Draw()
        {
            Gl.glPushMatrix();
            Gl.glTranslated(x,y,z);
            Gl.glRotated(45, 1, 0, 1);
            Gl.glColor3d(r, g, b);
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(size, size, size);
                Gl.glVertex3d(-size, size, size);
                Gl.glVertex3d(-size, -size, size);
                Gl.glVertex3d(size, -size, size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(size, size, -size);
                Gl.glVertex3d(size, -size, -size);
                Gl.glVertex3d(-size, -size, -size);
                Gl.glVertex3d(-size, size, -size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(-size, size, size);
                Gl.glVertex3d(-size, size, -size);
                Gl.glVertex3d(-size, -size, -size);
                Gl.glVertex3d(-size, -size, size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(size, size, size);
                Gl.glVertex3d(size, -size, size);
                Gl.glVertex3d(size, -size, -size);
                Gl.glVertex3d(size, size, -size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(-size, size, -size);
                Gl.glVertex3d(-size, size, size);
                Gl.glVertex3d(size, size, size);
                Gl.glVertex3d(size, size, -size);
            Gl.glEnd();
            Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex3d(-size, -size, -size);
                Gl.glVertex3d(size, -size, -size);
                Gl.glVertex3d(size, -size, size);
                Gl.glVertex3d(-size, -size, size);
            Gl.glEnd();
            Gl.glPopMatrix();
        }
    }

Блог им. darkxЧто почитать по OpenGL 3.0?

Посоветуйте, пожалуйста, пару книг или ресурсов по OpenGL 3.0
  • +1
  • darkx
  • 07 марта 2011, 09:15

Блог им. FromTulaдва simpleOpenGlControl в одном проекте

Задача: Построить в одном проекте в двух разных simpleOpenGlControl две поверхности(например два цилиндра).

Делаю поверхности, если по отдельности то всё замечательно сроит, но вместе одну поверхность никак не хочет строить, заметил что не строит ту которая идет первая:

public Form1()
        {
            InitializeComponent();
            simpleOpenGlControl1.InitializeContexts();//тут пусто
            simpleOpenGlControl2.InitializeContexts();//эту построит
            
        }

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

Блог им. amidСоздание 2D движка на C++ & OpenGL. (Продолжение)

Думаю, ознакомившись с первой частью этого цикла уроков, можно переходить на второй. И это опять перевод с gpwiki.org. Думаю, данный материал покажется вам полезным и разъяснит, из чего состоит графическое ядро! Случайно заметив его в интернете и узнав много нового, я решил поделится с вами этой ссылкой.
Читать дальше
  • +2
  • amid
  • 28 февраля 2011, 00:23

Блог им. TaoOpenGListerПерерисовка изображения

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

Блог им. isaerАнонс

Скоро напишу урок по двигу, совсем еще толком не знаю про что там буду писать, но буду писать =)) что нить на ходу придумаю, так что в ближайшее время ждите что нить прикольное
  • +3
  • isaer
  • 01 февраля 2011, 00:48

Блог им. OniKyРастительность

У кого нибудь есть идеи как такое можно реализовать? Дерево, Трава Очень хочу такое сделать =)
  • 0
  • OniKy
  • 22 января 2011, 01:45

Блог им. OniKyРендер в текстуру

Интересно как это реализовать? чтоб вторая камера снимала что-то, и то что снимает отображалось на текстуре в реал тайм?
  • 0
  • OniKy
  • 21 января 2011, 23:53

Блог им. RaTySЗапуск приложений , использующих Opengl

Добрый день,

Чтобы скомпилировать проект, использующий опенжл необходимо:
1.Установить TAO Framework
2.Подключить библиотеки:
TAO.Freglut.dll
TAO.OpenGL.dll
TAO.Platforms.Windows
3.Скопировать в папку Windows:
freeglut.dll

Какже теперь запустить скомпилированный экзешник на другом компьютере? Желательно без установки TAO Framework

Большое спасибо
  • +1
  • RaTyS
  • 21 января 2011, 20:14

Блог им. OniKyКамера

И снова я) Создал новый класс, камера, вроде бы все окей, работаю через gluLookAt, крутит, вертит, перемещается, но не могу додумать как сделать стрэйф (движение камеры влево или вправо)

Объявляю:

CCamera cam = new CCamera();


В инициализации:

cam.Position_Camera(0, 5, -10, 0, 0, 0, 0, 1, 0);


В таймере:

            Glu.gluLookAt(cam.mPos.x, cam.mPos.y, cam.mPos.z,
                      cam.mView.x, cam.mView.y, cam.mView.z,
                      cam.mUp.x, cam.mUp.y, cam.mUp.z);

            Gl.glPushMatrix();
            //модели
            Gl.glPopMatrix();


Считываю клаву:

        private void AnT_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.W)
                cam.Move_Camera(0.03f);

            if (e.KeyCode == Keys.S)
                cam.Move_Camera(-0.03f);

            if (e.KeyCode == Keys.A)
                cam.Rotate_Position(0.03f, 0, 1, 0);

            if (e.KeyCode == Keys.D)
                cam.Rotate_Position(-0.03f, 0, 1, 0);

            label2.Text = e.KeyCode.ToString();
        }


Вот сам класс:

        public struct Vector3D
        {
            public float x, y, z;
        };

        class CCamera
        {
            public Vector3D mPos;
            public Vector3D mView;
            public Vector3D mUp;

            static float currentRotX;
            static float lastRotX;

            public void Rotate_Position(float angle, float x, float y, float z)
            {
                mPos.x = mPos.x - mView.x;
                mPos.y = mPos.y - mView.y;
                mPos.z = mPos.z - mView.z;

                Vector3D vVector = mPos;
                Vector3D AVector;

                float SinA = (float)Math.Sin(angle);
                float CosA = (float)Math.Cos(angle);

                // Найдем новую позицию X для вращаемой точки 
                AVector.x = (CosA + (1 - CosA) * x * x) * vVector.x;
                AVector.x += ((1 - CosA) * x * y - z * SinA) * vVector.y;
                AVector.x += ((1 - CosA) * x * z + y * SinA) * vVector.z;

                // Найдем позицию Y 
                AVector.y = ((1 - CosA) * x * y + z * SinA) * vVector.x;
                AVector.y += (CosA + (1 - CosA) * y * y) * vVector.y;
                AVector.y += ((1 - CosA) * y * z - x * SinA) * vVector.z;

                // И позицию Z 
                AVector.z = ((1 - CosA) * x * z - y * SinA) * vVector.x;
                AVector.z += ((1 - CosA) * y * z + x * SinA) * vVector.y;
                AVector.z += (CosA + (1 - CosA) * z * z) * vVector.z;

                mPos.x = mView.x + AVector.x;
                mPos.y = mView.y + AVector.y;
                mPos.z = mView.z + AVector.z;
            }

            public void Move_Camera(float speed)
            {
                Vector3D mmView;
                mmView.x = mView.x - mPos.x;
                mmView.y = mView.y - mPos.y;
                mmView.z = mView.z - mPos.z;

                Vector3D vVector = mmView;  // Get the view vector 

                // Двигаем камеру со скоростью speed
                mPos.x = mPos.x + vVector.x * speed;
                mPos.z = mPos.z + vVector.z * speed;
                mView.x = mView.x + vVector.x * speed;
                mView.z = mView.z + vVector.z * speed;
            }

            public void Move()
            {
                mPos.x = mPos.x + 1;
                mView.x = mView.x + 1;
            }

            public void Rotate_View(float speed)
            {
                Vector3D mmView;
                mmView.x = mView.x - mPos.x;
                mmView.y = mView.y - mPos.y;
                mmView.z = mView.z - mPos.z;

                Vector3D vVector = mmView;  // Получаем вектор View

                mView.z = (float)(mPos.z + Math.Sin(speed) * vVector.x + Math.Cos(speed) * vVector.z);
                mView.x = (float)(mPos.x + Math.Cos(speed) * vVector.x - Math.Sin(speed) * vVector.z);
            }

            public void Position_Camera(float pos_x, float pos_y, float pos_z,
                    float view_x, float view_y, float view_z,
                    float up_x, float up_y, float up_z)
            {
                mPos.x = pos_x;
                mPos.y = pos_y;
                mPos.z = pos_z;
                mView.x = view_x;
                mView.y = view_y;
                mView.z = view_z;
                mUp.x = up_x;
                mUp.y = up_y;
                mUp.z = up_z;
            }
        };

А как стрейф сделать не пойму( может кто знает?
  • 0
  • OniKy
  • 09 января 2011, 22:12

Блог им. OniKyМассив объектов

Что-то я запутался, есть у меня класс Objects, определяю его как массив
Objects[] mObject = new Objects[999];

объявляю переменную,

intcreatedObjects; 


чтоб узнать сколько объектов создал и по этой переменной создавать цикл, потом прицепляю к кнопке создания нового объекта
Читать дальше
  • 0
  • OniKy
  • 08 января 2011, 04:51

Блог им. OniKyТормозит при малом количестве объектов???

И снова добрый вечер) в этот раз проблема является производительности, неизвестно по каким причинам, при более 1 объекта (простейшего, к прим. куб) в сцене, увеличивается нагрузка на цп. Вот рисую 10 текстурированных кубиков и тормозит очень сильно =(
Читать дальше
  • +1
  • OniKy
  • 06 января 2011, 05:12

Блог им. OniKyПомогите новичку с Tao Framework и list объектов

Добрый день, хочу реализовать с помощью OpenGL (Tao Framework) программу которая б создавала атомы в пространстве по указанным координатам (как бы кристаллическую решетку) и можно было манипулировать этими объектами (вращать, передвигать), также надо это сделать компонентом, чтоб можно было просто в другие проекты вставлять, и все это нужно для моего универа. Суть проблемы в том, что вроде все правильно, а работает с глюками. Создает атомы, по координатам, вращает, но через несколько поворотов/созданий, исчезают все атомы кроме первого созданного атома, я пока не понимаю почему так происходит. Работаю без таймера, графика рисуется и обновляется по событию (к примеру кнопки вращения или добавления нового атома).
Читать дальше
  • +1
  • OniKy
  • 22 декабря 2010, 07:04