Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > обьекты несглаженные на чужом компе


Автор: kostay 26.10.2008, 21:17
короче всё рисуется какимто квадратным линии не гладкии а ступен4атые, гоораздо ступен4атей чем у меня
почему так? чтото слышал про aliasing ето поможет? чтоб и на другом компе всё было ок...

и ес4о, когда в релизе ставлю multithreaded самое первое тобиш то вообше чуш проищодит, половина того что надо не рисуется, дело не в графике уже, а в массиве который содержит данные что где рисовать, там одёрки двойки, -1, так вот по4емуто 1 переделываются на -1... очень расстроен, но в multithreaded debug dll всё ок, что ета за зараза такая?

Автор: Rickert 27.10.2008, 04:33
kostay, вы на каком языке говорите? smile 
По поводу квадратуры круга, которая не у вас: возможно у человека настроена видяха на параметры "наибольшая производительность", поэтому вам кажется что всё более квадратурно чем закруглее у вас smile 
Идём в поиск: "Уроки NeHe", 46 урок.
А про второй вопрос вас шляпник только понять сможет

Автор: kostay 27.10.2008, 11:01
там весь урок по windows forms а я в консоле окно создаю, вот ети hdc wdc где брать и как...

Автор: kostay 27.10.2008, 11:38
http://ipicture.ru/

вот тут я использовал вот ето:
Код

glEnable(GL_BLEND);
   
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // здесь надо то что тебе подойдёт
    glShadeModel(GL_SMOOTH);
   
    glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST);
    glEnable(GL_POLYGON_SMOOTH);

    glHint(GL_POINT_SMOOTH_HINT, GL_FASTEST);
    glEnable(GL_POINT_SMOOTH);

    glHint(GL_LINE_SMOOTH_HINT, GL_FASTEST);
    glEnable(GL_LINE_SMOOTH);
   
    glDisable( GL_DEPTH_TEST );
    glEnable( GL_ALPHA_TEST );

и мои квадратики жутко испортились, зато кружо4ки стали сглаженными, вопрос как квадратики тоже сделать сглаженными и вобше по4ему они такие

вот как квадратики нарисованы:
Код

glPushMatrix();
glTranslated(75*(i+1),75*(j+1),0);
glScaled(1.0, 1.0, 0.2);
glLoadName(counter++);
glutSolidCube (70);
glPopMatrix();

а вот крижо4ки:
Код

GLUquadricObj* cyl = gluNewQuadric();
gluQuadricDrawStyle(cyl, GLU_FILL);
gluQuadricNormals(cyl, GLU_SMOOTH);
gluQuadricTexture(cyl, GL_TRUE); 
gluCylinder(cyl, 30, 30, 10, 20, 20);


Код

while(a < 2*PI){                    
                    i++;
                    a = r*i;

                    XX = (X-x)*cos(a) - (Y-y)*sin(a) + x;
                    YY = (X-x)*sin(a) + (Y-y)*cos(a) + y;

                    glBegin(GL_LINES);
                        glVertex2f(x, y);
                        glVertex2f(XX, YY);
                    glEnd();
                }

Автор: Rickert 27.10.2008, 11:50
Цитата(kostay @  27.10.2008,  11:38 Найти цитируемый пост)
и мои квадратики жутко испортились, зато кружо4ки стали сглаженными, вопрос как квадратики тоже сделать сглаженными и вообще по4ему они такие

Ваши квадратики, пардон, испортились потому что вы добавляете параметр сглаживания линий. И судя по, как обычно, уменьшиным в 100 раз, изображениям - это работает.
А нас крине я ни квадратиков, ни кружочков не углядел: только линии, которые оконтуривают какие-то полигоны и какие-то недо-цилиндры.

Автор: kostay 27.10.2008, 11:57
разобрался с етой порчей, когда пытаюсь глутСолидКуб сгладить он гладится более менее, не идеально, но подиагонали на нём линия образуется как на картинке, как её убрать то

Добавлено через 2 минуты и 2 секунды
нипонел?? 4то у меня не так сделано?

картинка 100% как в оригинале я ни4его не уменьшаю, мне 4то делать не4его )

Добавлено через 3 минуты и 19 секунд
Код

glHint(GL_LINE_SMOOTH_HINT, GL_FASTEST);
glDisable(GL_LINE_SMOOTH);


 ну поставил я вот ето перед прорисовкой куба и толку нету

Добавлено через 5 минут и 42 секунды
может мне кубы тогда тоже 4ерез квадрики делать

тогда б я вот ето добавил 
Код

gluQuadricNormals(cyl, GLU_SMOOTH);


и возможно стало так как надо?

Автор: Rickert 27.10.2008, 12:04
Цитата(kostay @  27.10.2008,  11:57 Найти цитируемый пост)
 ну поставил я вот ето перед прорисовкой куба и толку нету 

Эту галиматень тоже надо возвращать в исходное состояние, если не хочешь что-либо отрисовывать со сглаженными линиями.
Код
glEnable(GL_BLEND);
   
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // здесь надо то что тебе подойдёт
    glShadeModel(GL_SMOOTH);
   
    glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST);
    glEnable(GL_POLYGON_SMOOTH);
    glHint(GL_POINT_SMOOTH_HINT, GL_FASTEST);
    glEnable(GL_POINT_SMOOTH);
    glHint(GL_LINE_SMOOTH_HINT, GL_FASTEST);
    glEnable(GL_LINE_SMOOTH);
   
    glDisable( GL_DEPTH_TEST );
    glEnable( GL_ALPHA_TEST );

Автор: kostay 27.10.2008, 13:34
ну я и возврашаю её в исходное состаяние делаю дисабле там где енабле каждый раз после прорисовки
спецально для кубов я поставил дополнительно дисабле на линии и толку небыло, попробую всётаки через квадрики их рисовать

Автор: Rickert 27.10.2008, 17:10
kostay, давай - давай

Автор: kostay 27.10.2008, 22:37
а у меня дома то такого нету, всё прекрасно без порчи, а в другом месте вне дома линия по диагонали квадрата и не так прикольно сглажено, теперь и не проверить даже, пример под консольную программу бы...

Автор: Rickert 28.10.2008, 04:36
kostay, как рисуешь линии? GL_LINE_LOOP ?
Квадратики у тебя состоят из треугольников?

Автор: kostay 29.10.2008, 12:17
Код

glutSolidCube (70);

выше ведь привёл код...
а как он там нарисован, хрен знает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)