2013-04-25 2 views
-2

Мне нужно сделать программу, которая должна нарисовать квадрат, который меняет цвета. Эта программа будет рисовать окно с белым фоном, размером 256x256 пикселей, красным квадратом с координатой верхнего левого верха (x, y) = (30, 226) и координатами нижнего правого угла (x, y) = (226, 30). Когда нажата клавиша 'a' (keycode = 97), квадрат должен лежать с синим цветом. Когда нажата клавиша «v» (keycode = 118), квадрат должен вернуться к красному. Когда нажата клавиша ESC (keycode = 27), программа должна быть завершена.C++ с OpenGL - рисование квадрата

- Существует журнал ...

Build Log  
Build started: 
Project: square, Configuration: Debug|Win32 

Command Lines  
Creating temporary file "c:\Users\TEMP\Documents\Visual Studio 2008\Projects\square\square\Debug\RSP00000544445896.rsp" with contents 
[ 
/OUT:"C:\Users\TEMP\Documents\Visual Studio 2008\Projects\square\Debug\square.exe" /MANIFEST /MANIFESTFILE:"Debug\square.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\TEMP\Documents\Visual Studio 2008\Projects\square\Debug\square.pdb" /DYNAMICBASE /NXCOMPAT /MACHINE:X86 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 

".\Debug\square.obj" 
] 
Creating command line "link.exe @"c:\Users\TEMP\Documents\Visual Studio 2008\Projects\square\square\Debug\RSP00000544445896.rsp" /NOLOGO /ERRORREPORT:PROMPT" 


Output Window  
Linking... 
square.obj : error LNK2019: unresolved external symbol __imp____glutInitWithE[email protected] referenced in function [email protected] 
square.obj : error LNK2019: unresolved external symbol [email protected] referenced in function [email protected] 
C:\Users\TEMP\Documents\Visual Studio 2008\Projects\square\Debug\square.exe : fatal error LNK1120: 2 unresolved externals 


Results  
Build log was saved at "file://c:\Users\TEMP\Documents\Visual Studio 2008\Projects\square\square\Debug\BuildLog.htm" 
square - 3 error(s), 0 warning(s) 

Код:

#include <GL/glut.h> 

// Function callback that is called to manage the keyboard tasks 
float r = 0.0f; 
float g = 0.0f; 
float b = 0.0f; 
void GerenciaTeclado(unsigned char key, int x, int y) 
{ 
    switch (key) { 
    case 'a':// change the actual color to red 
     r = 1.0f; 
     g = 0.0f; 
     b = 0.0f; 
     break; 
    case 'v':// change de color to blue 
     r = 0.0f; 
     g = 0.0f; 
     b = 1.0f; 
     break; 
    case 27:// close the screen 
     exit(0); 
     break; 
    } 
    glutPostRedisplay(); 
} 

// Function callback that is called to draw 
void Desenha(void) 
{ 
    // Clean the window 
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 
    glClear(GL_COLOR_BUFFER_BIT); 

    // Initializes the coordinates system 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    double w = glutGet(GLUT_WINDOW_WIDTH); 
    double h = glutGet(GLUT_WINDOW_HEIGHT); 
    double ar = w/h; 
    glOrtho(-2 * ar, 2 * ar, -2, 2, -1, 1); 

    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 

    // Draw a square 
    glBegin(GL_QUADS); 
    // Shows that the color is red 
    //  R G B 
    glColor3f(r, g, b); 
    glVertex2f(-1, -1); 
    glVertex2f(1, -1); 
    // Shows that the color is blue 
    glColor3f(0.0f, 0.0f, 1.0f); 
    glVertex2f(1, 1); 
    glVertex2f(-1, 1); 
    glEnd(); 

    glutSwapBuffers(); 
} 

// Main Program 
int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); 
    glutInitWindowSize(256,256); 
    glutInitWindowPosition(10,10); 
    glutCreateWindow("Quadrado"); 
    glutDisplayFunc(Desenha); 
    glutKeyboardFunc(GerenciaTeclado); 
    glutMainLoop(); 
} 
+0

Всегда отправляйте сообщение об ошибке, если оно у вас есть. Никто не должен угадывать это с самого начала. –

+0

Я добавил изображение ошибки сейчас ... Большое спасибо. – Dreamer

+0

Скопировать и вставить в вопрос было бы лучше. В любом случае, теперь, когда вы его разместили, я вижу, что у вас есть ** линкер ** ошибка, поэтому ваш код скомпилирован. Он не связывался. –

ответ

1

При создании чего-то с GLUT вам нужно связать код с библиотекой GLUT. Попробуйте Google, как вы связываете визуальную студию с дополнительной сторонней библиотекой. В вашем случае я считаю, что вам нужно будет добавить другой каталог библиотеки, а затем добавить дополнительную зависимость (glut.lib) в свойствах компоновщика проекта.