Сабж. У меня появилось подозрение, что сия функсия поддерживается не на всех машинах... плиz, подкиньти ссылку на пример кода, где используется такой эффект, предварительно проверив на своей машине. И вообше, непомешалб советы более-менее опытного в opengl... например, всё делать через glCallList, и как пользоваться функцией glDrawElement... Пример бы...

Комментарии
21.02.2005 в 01:28

/*Unknown Man*/
Точно сказать не можу, так как на TNT2 алиазинг тока для линии. Но я проверял на другой карточке, работает. Только рендрить нужно скопом то бишь дравэлементами, а не пополигонно, иначе дыры образуются. Саму же функцию в спецификации посмотри. Там всё описано.
21.02.2005 в 08:20

У меня TNT2 - у меня получился антиализинг полигонов; запустил ещё раз - еффект пропал. Это всё хитрое шамансто! =D Рэндерить всё вместе ещё не научился. Но это вопрос времени. Спасибо, что откликнулся =)
13.03.2005 в 21:01

день добрый.

есть такая фишка как glEnable(GL_POLYGON_SMOOTH); но она не прокатывает на последних карточках от нвидия, идут глюки.

Я занком с двумя спосабами апаратного антиализинга. Это Supersampling и Multisamling.

1) Supersampling - используется в игре Homeworld2. Его смысл - испольования PBuffer-а много большего размера, чем вывод на экран, ренерин в этот буфер, а потом вывод этого буфера растянув его на два полигона на весь экран. Довольно требователен к филрейту видюхи и скорость видеопамяти. Оптимизируется донельзя. Можно гладить всё офигенно. Готовые примеры оч. большие, к сожалению не могу дать.

2) Multisampling - встроен в видюхи, так называемая тройная буферизация. Никаких мега замрочоек при рисовании не надо. Требует экстеншина ARB_multisample Ниже код для Windows-base system.



hdc - HDC на конекст рисования. Данный код вставлять ПОСЛЕ wglMakeCurrent



int pixelFormat;

bool valid;

UINT numFormats;

int iAttributes[] =

{

WGL_DRAW_TO_WINDOW_ARB, GL_TRUE, WGL_SUPPORT_OPENGL_ARB, GL_TRUE, WGL_ACCELERATION_ARB, WGL_FULL_ACCELERATION_ARB, WGL_COLOR_BITS_ARB, 24, WGL_ALPHA_BITS_ARB, 8, WGL_DEPTH_BITS_ARB, 24, WGL_STENCIL_BITS_ARB, 0, WGL_DOUBLE_BUFFER_ARB,GL_TRUE, WGL_SAMPLE_BUFFERS_ARB, GL_TRUE, WGL_SAMPLES_ARB, 4, 0};



PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB = ( PFNWGLCHOOSEPIXELFORMATARBPROC )wglGetProcAddress( "wglChoosePixelFormatARB" );

valid = wglChoosePixelFormatARB( hdc, iAttributes, fAttributes, 1, & pixelFormat, & numFormats );

if ( !( valid && numFormats >= 1 ) )

printf( "Cannot init ARB multisample!\n" );



код для unix based system. Данный код вставлять ДО XCreateWindow

dpy - Display указатель на открытое соединие с Икс сервером.





XVisualInfo * vInfo;

GLXFBConfig * fbConfigs;



int atributes[] =

{GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT, GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_DOUBLEBUFFER, GL_TRUE, GLX_RED_SIZE, 8, GLX_GREEN_SIZE, 8, GLX_BLUE_SIZE, 8, GLX_ALPHA_SIZE, 8, GLX_DEPTH_SIZE, 24, GLX_STENCIL_SIZE, 0, GLX_SAMPLE_BUFFERS_ARB, GL_TRUE, GLX_SAMPLES_ARB, 4, None };

fbConfigs = glXChooseFBConfig( dpy, DefaultScreen( dpy ), atributes, & numReturned );

if ( fbConfigs == NULL )

return false;

vInfo = glXGetVisualFromFBConfig( dpy, fbConfigs[0] );



после vInfo и fbConfigs использовать для создания окна и контекста рендеринга.

в случаи провала конектст не будет создан.

перед этим желательно делать проверку на GL_ARB_multisample в списке glGetString(GL_EXTENSIONS);

для этих коов нао поключать gl/wglext.h или gl/glxext.h причём в случаи юникса перед подключением инклюда очень рекомендую селать так

#define GLX_EXT_PROTOTYPES 1

#include <gl/glxext.h>



Удачи.