PDA

View Full Version : دندانه زدایی!!



1485159
یک شنبه 18 بهمن 1388, 00:10 صبح
سلام
وقتی تو برنامم خطی میکش خط دندانه دندانه میشه که اصلا جالب نیست!! برای این کار الگوریتمی وجود داره یا خود Opengl میتونه این کار رو بکنه؟
در ضمن اگه الگوریتم داشت در مورد الگوریتمش یه توضحی بدین..
ممنون.

kochol
یک شنبه 18 بهمن 1388, 13:50 عصر
نه این کار رو خود کارت گرافیک انجام می ده ولی من با opengl این کار رو بلد نیستم ولی اگه از wgl استفاده می کنی به اون مربوط می شه اگر هم از SDL استفاده کنی که دیگه راحته

1485159
یک شنبه 18 بهمن 1388, 18:12 عصر
نه این کار رو خود کارت گرافیک انجام می ده
چطوری باید فعالش کنم؟


ولی اگه از wgl استفاده می کنی به اون مربوط می شه اگر هم از SDL استفاده کنی که دیگه راحته
این یعنی چی؟:متفکر:
ممنون.

PC2st
یک شنبه 18 بهمن 1388, 19:07 عصر
احتمالا منظورت همان Antialiazing باشد:
http://www.opengl.org/resources/code/samples/sig99/advanced99/notes/node120.html
http://fly.cc.fer.hr/~unreal/theredbook/chapter07.html

که لینک دوم از آموزش زیر برداشته شده است:
http://www.glprogramming.com/red/

1485159
یک شنبه 18 بهمن 1388, 20:35 عصر
من که زیاد از اینا سر در نیاوردم..

PC2st
یک شنبه 18 بهمن 1388, 21:02 عصر
من تخصص در OpenGL ندارم ولی آنطور که در لینک دوم نوشته شده؛
برای antialiase کردن خطوط یا نقاط، یکی از مقادیر GL_POINT_SMOOTH یا GL_LINE_SMOOTH را به تابع glEnable بفرستید و توضیحات دیگر هم داده (تقریبا در اواسط صفحه است) به همراه مثال زیر:


#include <GL/gl.h>
#include <GL/glu.h>
#include "aux.h"

void myinit(void)
{
GLfloat values[2];
glGetFloatv(GL_LINE_WIDTH_GRANULARITY, values);
printf("GL_LINE_WIDTH_GRANULARITY value is %3.1f\n",
values[0]);

glGetFloatv(GL_LINE_WIDTH_RANGE, values);
printf("GL_LINE_WIDTH_RANGE values are %3.1f %3.1f\n",
values[0], values[1]);

glEnable(GL_LINE_SMOOTH);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
glLineWidth(1.5);

glShadeModel(GL_FLAT);
glClearColor(0.0, 0.0, 0.0, 0.0);
glDepthFunc(GL_LEQUAL);
glEnable(GL_DEPTH_TEST);
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor4f(1.0, 1.0, 1.0, 1.0);
auxWireIcosahedron(1.0);
glFlush();
}

void myReshape(GLsizei w, GLsizei h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (GLfloat) w/(GLfloat) h, 3.0, 5.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0, 0.0, -4.0);
}


int main(int argc, char** argv)
{
auxInitDisplayMode(AUX_SINGLE | AUX_RGBA | AUX_DEPTH);
auxInitPosition(0, 0, 400, 400);
auxInitWindow(argv[0]);
myinit();
auxReshapeFunc(myReshape);
auxMainLoop(display);
}

1485159
پنج شنبه 13 خرداد 1389, 23:56 عصر
من تخصص در OpenGL ندارم ولی آنطور که در لینک دوم نوشته شده؛
برای antialiase کردن خطوط یا نقاط، یکی از مقادیر GL_POINT_SMOOTH یا GL_LINE_SMOOTH را به تابع glEnable بفرستید و توضیحات دیگر هم داده (تقریبا در اواسط صفحه است) به همراه مثال زیر:
نه. با این کار ها نمیشه.
سایت nehe در این مورد یه مثال(درس 46) زده ولی من هیچی نمیفهمم ازش.
برای این کار باید به چه صورت عمل کنیم؟ منظورم اینه که الگوریتمش چیه؟