مشکل در opengl "لطفا کمک کنید"
	
	
		سلام دوستان و اساتید
من چند تا برنامه ی opengl گرفتم که وقتی اجراشون می کنم،به جای اینکه خروجی ظاهر شه.
صفحه سفید می شه.
مشکل از چیه؟
مثلا همین برنامه ای که آقای ادمین گذاشتن توو سایت
ستاره ای که با کیبورد جابه جا میشه
این کدش:
	کد:
	
#include"stdafx.h"#include<iostream>
#include<glut.h>
#include <math.h>
// Define a constant for the value of PI
#define GL_PI 3.1415f
// Rotation amounts
static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;
// Flags for effects
#define MODE_SOLID 0
#define MODE_LINE  1
#define MODE_POINT 2
int iMode = MODE_SOLID;
GLboolean bEdgeFlag = TRUE;
///////////////////////////////////////////////////////////////////////////////
// Reset flags as appropriate in response to menu selections
void ProcessMenu(int value)
        {
        switch(value)
                {
                case 1:
                        iMode = MODE_SOLID;
                        break;
                case 2:
                        iMode = MODE_LINE;
                        break;
                case 3:
                        iMode = MODE_POINT;
                        break;
                case 4:
                        bEdgeFlag = TRUE;
                        break;
                case 5:
                default:
                        bEdgeFlag = FALSE;
                        break;
                }
        glutPostRedisplay();
        }
// Called to draw scene
void RenderScene(void)
        {
        // Clear the window
        glClear(GL_COLOR_BUFFER_BIT);
        // Draw back side as a polygon only, if flag is set
        if(iMode == MODE_LINE)
                glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
        if(iMode == MODE_POINT)
                glPolygonMode(GL_FRONT_AND_BACK,GL_POINT);
        if(iMode == MODE_SOLID)
                glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
        // Save matrix state and do the rotation
        glPushMatrix();
        glRotatef(xRot, 1.0f, 0.0f, 0.0f);
        glRotatef(yRot, 0.0f, 1.0f, 0.0f);
        // Begin the triangles
        glBegin(GL_TRIANGLES);
                glEdgeFlag(bEdgeFlag);
                glVertex2f(-20.0f, 0.0f);
                glEdgeFlag(TRUE);
                glVertex2f(20.0f, 0.0f);
                glVertex2f(0.0f, 40.0f);
                glVertex2f(-20.0f,0.0f);
                glVertex2f(-60.0f,-20.0f);
                glEdgeFlag(bEdgeFlag);
                glVertex2f(-20.0f,-40.0f);
                glEdgeFlag(TRUE);
                glVertex2f(-20.0f,-40.0f);
                glVertex2f(0.0f, -80.0f);
                glEdgeFlag(bEdgeFlag);
                glVertex2f(20.0f, -40.0f);                
                glEdgeFlag(TRUE);
                glVertex2f(20.0f, -40.0f);                
                glVertex2f(60.0f, -20.0f);
                glEdgeFlag(bEdgeFlag);
                glVertex2f(20.0f, 0.0f);
                glEdgeFlag(TRUE);
                // Center square as two triangles
                glEdgeFlag(bEdgeFlag);
                glVertex2f(-20.0f, 0.0f);
                glVertex2f(-20.0f,-40.0f);
                glVertex2f(20.0f, 0.0f);
                
                glVertex2f(-20.0f,-40.0f);
                glVertex2f(20.0f, -40.0f);
                glVertex2f(20.0f, 0.0f);
                glEdgeFlag(TRUE);
        
        // Done drawing Triangles
        glEnd();
        // Restore transformations
        glPopMatrix();
        // Flush drawing commands
        glutSwapBuffers();
        }
// This function does any needed initialization on the rendering
// context. 
void SetupRC()
        {
        // Black background
        glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
        // Set drawing color to green
        glColor3f(0.0f, 1.0f, 0.0f);
        }
void SpecialKeys(int key, int x, int y)
        {
        if(key == GLUT_KEY_UP)
                xRot-= 5.0f;
        if(key == GLUT_KEY_DOWN)
                xRot += 5.0f;
        if(key == GLUT_KEY_LEFT)
                yRot -= 5.0f;
        if(key == GLUT_KEY_RIGHT)
                yRot += 5.0f;
        if(key > 356.0f)
                xRot = 0.0f;
        if(key < -1.0f)
                xRot = 355.0f;
        if(key > 356.0f)
                yRot = 0.0f;
        if(key < -1.0f)
                yRot = 355.0f;
        // Refresh the Window
        glutPostRedisplay();
        }
void ChangeSize(int w, int h)
        {
        GLfloat nRange = 100.0f;
        // Prevent a divide by zero
        if(h == 0)
                h = 1;
        // Set Viewport to window dimensions
    glViewport(0, 0, w, h);
        // Reset projection matrix stack
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        // Establish clipping volume (left, right, bottom, top, near, far)
    if (w <= h) 
                glOrtho (-nRange, nRange, -nRange*h/w, nRange*h/w, -nRange, nRange);
    else 
                glOrtho (-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange, nRange);
        // Reset Model view matrix stack
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        }
int main(int argc, char* argv[])
        {
        int nModeMenu;
        int nEdgeMenu;
        int nMainMenu;
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
        glutCreateWindow("Solid and Outlined Star");
        
        // Create the Menu
        nModeMenu = glutCreateMenu(ProcessMenu);
        glutAddMenuEntry("Solid",1);
        glutAddMenuEntry("Outline",2);
        glutAddMenuEntry("Points",3);
        nEdgeMenu = glutCreateMenu(ProcessMenu);
        glutAddMenuEntry("On",4);
        glutAddMenuEntry("Off",5);
        nMainMenu = glutCreateMenu(ProcessMenu);
        glutAddSubMenu("Mode", nModeMenu);
        glutAddSubMenu("Edges", nEdgeMenu);
        glutAttachMenu(GLUT_RIGHT_BUTTON);
        
        glutReshapeFunc(ChangeSize);
        glutSpecialFunc(SpecialKeys);
        glutDisplayFunc(RenderScene);
        SetupRC();
        glutMainLoop();
        return 0;
        }
 لطفا  راهنمایی بفرمایید
	 
	
	
	
		پاسخ : مشکل در opengl "لطفا کمک کنید"
	
	
		
	نقل قول:
	
		
		
			
				نوشته اصلی توسط 
karaj.designer
				
			 
			سلام دوستان و اساتید
من چند تا برنامه ی opengl گرفتم که وقتی اجراشون می کنم،به جای اینکه خروجی ظاهر شه.
صفحه سفید می شه.
مشکل از چیه؟
مثلا همین برنامه ای که آقای ادمین گذاشتن توو سایت
ستاره ای که با کیبورد جابه جا میشه
این کدش:
	کد:
	
#include"stdafx.h"#include<iostream>
#include<glut.h>
#include <math.h>
// Define a constant for the value of PI
#define GL_PI 3.1415f
// Rotation amounts
static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;
// Flags for effects
#define MODE_SOLID 0
#define MODE_LINE  1
#define MODE_POINT 2
int iMode = MODE_SOLID;
GLboolean bEdgeFlag = TRUE;
///////////////////////////////////////////////////////////////////////////////
// Reset flags as appropriate in response to menu selections
void ProcessMenu(int value)
    {
    switch(value)
        {
        case 1:
            iMode = MODE_SOLID;
            break;
        case 2:
            iMode = MODE_LINE;
            break;
        case 3:
            iMode = MODE_POINT;
            break;
        case 4:
            bEdgeFlag = TRUE;
            break;
        case 5:
        default:
            bEdgeFlag = FALSE;
            break;
        }
    glutPostRedisplay();
    }
// Called to draw scene
void RenderScene(void)
    {
    // Clear the window
    glClear(GL_COLOR_BUFFER_BIT);
    // Draw back side as a polygon only, if flag is set
    if(iMode == MODE_LINE)
        glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
    if(iMode == MODE_POINT)
        glPolygonMode(GL_FRONT_AND_BACK,GL_POINT);
    if(iMode == MODE_SOLID)
        glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
    // Save matrix state and do the rotation
    glPushMatrix();
    glRotatef(xRot, 1.0f, 0.0f, 0.0f);
    glRotatef(yRot, 0.0f, 1.0f, 0.0f);
    // Begin the triangles
    glBegin(GL_TRIANGLES);
        glEdgeFlag(bEdgeFlag);
        glVertex2f(-20.0f, 0.0f);
        glEdgeFlag(TRUE);
        glVertex2f(20.0f, 0.0f);
        glVertex2f(0.0f, 40.0f);
        glVertex2f(-20.0f,0.0f);
        glVertex2f(-60.0f,-20.0f);
        glEdgeFlag(bEdgeFlag);
        glVertex2f(-20.0f,-40.0f);
        glEdgeFlag(TRUE);
        glVertex2f(-20.0f,-40.0f);
        glVertex2f(0.0f, -80.0f);
        glEdgeFlag(bEdgeFlag);
        glVertex2f(20.0f, -40.0f);        
        glEdgeFlag(TRUE);
        glVertex2f(20.0f, -40.0f);        
        glVertex2f(60.0f, -20.0f);
        glEdgeFlag(bEdgeFlag);
        glVertex2f(20.0f, 0.0f);
        glEdgeFlag(TRUE);
        // Center square as two triangles
        glEdgeFlag(bEdgeFlag);
        glVertex2f(-20.0f, 0.0f);
        glVertex2f(-20.0f,-40.0f);
        glVertex2f(20.0f, 0.0f);
        
        glVertex2f(-20.0f,-40.0f);
        glVertex2f(20.0f, -40.0f);
        glVertex2f(20.0f, 0.0f);
        glEdgeFlag(TRUE);
    
    // Done drawing Triangles
    glEnd();
    // Restore transformations
    glPopMatrix();
    // Flush drawing commands
    glutSwapBuffers();
    }
// This function does any needed initialization on the rendering
// context. 
void SetupRC()
    {
    // Black background
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
    // Set drawing color to green
    glColor3f(0.0f, 1.0f, 0.0f);
    }
void SpecialKeys(int key, int x, int y)
    {
    if(key == GLUT_KEY_UP)
        xRot-= 5.0f;
    if(key == GLUT_KEY_DOWN)
        xRot += 5.0f;
    if(key == GLUT_KEY_LEFT)
        yRot -= 5.0f;
    if(key == GLUT_KEY_RIGHT)
        yRot += 5.0f;
    if(key > 356.0f)
        xRot = 0.0f;
    if(key < -1.0f)
        xRot = 355.0f;
    if(key > 356.0f)
        yRot = 0.0f;
    if(key < -1.0f)
        yRot = 355.0f;
    // Refresh the Window
    glutPostRedisplay();
    }
void ChangeSize(int w, int h)
    {
    GLfloat nRange = 100.0f;
    // Prevent a divide by zero
    if(h == 0)
        h = 1;
    // Set Viewport to window dimensions
    glViewport(0, 0, w, h);
    // Reset projection matrix stack
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    // Establish clipping volume (left, right, bottom, top, near, far)
    if (w <= h) 
        glOrtho (-nRange, nRange, -nRange*h/w, nRange*h/w, -nRange, nRange);
    else 
        glOrtho (-nRange*w/h, nRange*w/h, -nRange, nRange, -nRange, nRange);
    // Reset Model view matrix stack
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }
int main(int argc, char* argv[])
    {
    int nModeMenu;
    int nEdgeMenu;
    int nMainMenu;
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutCreateWindow("Solid and Outlined Star");
    
    // Create the Menu
    nModeMenu = glutCreateMenu(ProcessMenu);
    glutAddMenuEntry("Solid",1);
    glutAddMenuEntry("Outline",2);
    glutAddMenuEntry("Points",3);
    nEdgeMenu = glutCreateMenu(ProcessMenu);
    glutAddMenuEntry("On",4);
    glutAddMenuEntry("Off",5);
    nMainMenu = glutCreateMenu(ProcessMenu);
    glutAddSubMenu("Mode", nModeMenu);
    glutAddSubMenu("Edges", nEdgeMenu);
    glutAttachMenu(GLUT_RIGHT_BUTTON);
    
    glutReshapeFunc(ChangeSize);
    glutSpecialFunc(SpecialKeys);
    glutDisplayFunc(RenderScene);
    SetupRC();
    glutMainLoop();
    return 0;
    }
 لطفا  راهنمایی بفرمایید
 
			
		
	 
 سلام
احتمال داره مشکل سخت افزاری باشه
شاید مشکل از راه انداز opengl کارت گرافیکتون باشه
مدل گرافیکتون چیه؟
	 
	
	
	
		پاسخ : مشکل در opengl "لطفا کمک کنید"
	
	
		ATI Radeon HD 5470 DDR3 1024 MB up to 3579 MB
الان این برنامه برای شما اجرا می شه برای شما؟
البته این مشکل برای همه ی برنامه هام پیش نمیادا...
من در اصل می خوام یه برنامه بنویسم که یه دایره 3 بعدی رسم کنه و با کلیدهای جهت دار به بالا پایین چپ راست حرکت کنه.
دوستان کمک کنید لطفا...
	 
	
	
	
		پاسخ : مشکل در opengl "لطفا کمک کنید"
	
	
		
	نقل قول:
	
		
		
			
				نوشته اصلی توسط 
karaj.designer
				
			 
			ATI Radeon HD 5470 DDR3 1024 MB up to 3579 MB
الان این برنامه برای شما اجرا می شه برای شما؟
البته این مشکل برای همه ی برنامه هام پیش نمیادا...
من در اصل می خوام یه برنامه بنویسم که یه دایره 3 بعدی رسم کنه و با کلیدهای جهت دار به بالا پایین چپ راست حرکت کنه.
دوستان کمک کنید لطفا...
 
			
		
	 
 پس از لپتاپ استفاده میکنید
درایورشو یکبار چک کنید 
من اطلاعاتم واسه gl/cl/dx هست
	 
	
	
	
		پاسخ : مشکل در opengl "لطفا کمک کنید"
	
	
		درایورشو دوباره نصب کردم.
متاسفانه مشکل مرتفع نشد.
من جایی خونده بودم که اگه جای تکه کد ها درست نباشه،ممکنه این اتفاق بیفته.
دوستان میشه شمام یه نگاه بندازین ببینین مشکل از کجاست؟
اصلا کسی برنامه ی دایره ی 3 بعدی که با حرکتا کلیدهای جهت دار کیبورد بالا پایین چپ راست میشه رو داره؟