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


Всем привет. Мне опять нужна помощь))
Я столкнулся со следующей проблемой...я рисую сетку из прямоугольников, и на каждый меш накладываю текстуру...Если буду рисовать 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);

не помогло.


Всем привет. Я понимаю то это заезженная тема, но у меня есть проблема.....Вопрос следующий:
Мне нужно перевести координаты 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
    }


^
Регистрация
Регистрируясь, вы принимаете правила сайта. Если вы не получили код подтв. регистрации - не забудьте проверить папку спам.
Логин*
Email*
Пароль*
Подтверждение пароля*
 
Логин*
Код*
 
×
Восстановление пароля
Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш Email. Если код не пришел в течении нескольких минут - проверьте папку спам.
Логин

или Email
Логин*
Код подтверждения*
Новый пароль*
Подтверждение пароля*
×
Авторизация
  • Используйте вашу учетную запись на Facebook.com для входа на сайт.
  • Используйте вашу учетную запись VKontakte для входа на сайт.
  • Используйте вашу учетную запись Google для входа на сайт.
Авторизуйтесь с помощью соц. сети или с помощью аккаунта на сайте:
×