Всем привет. У меня возникла проблема. Необходимо вывести русский текст на экран. Никто не сталкивался с этим???
Всем привет. Мне опять нужна помощь))
Я столкнулся со следующей проблемой...я рисую сетку из прямоугольников, и на каждый меш накладываю текстуру...Если буду рисовать GL_QUAD_STRIP, то всё хорошо, но если просто GL_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); |
не помогло.
Всем привет. Я понимаю то это заезженная тема, но у меня есть проблема.....Вопрос следующий:
Мне нужно перевести координаты WinForm в координаты GL....я это сделал, но есть косяк, а именно, узнаю координаты верхнего правого угла и правого нижнего угла:
где Z - радиус вектор (т.е. расстояние от начала координат до нашей точки). парадокс в том, что координаты p1.X != p2.X, и координаты p1.Y !=p2.Y....Расхождение по X небольшое (начинается с тысячных)....оно меня не волнует так как расхождение по Y (в сотых) т.е например p1.Y=3.508...., а p2.Y=3.538.....
В чем может быть проблема?
вот код:
Ну а Point3D это вектор:
Мне нужно перевести координаты 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
} |
1442
25.03.2011
11



.