Hallo,
ich bin dabei, OpenGL zu lernen, deswegen habe ich mir den „OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3“ gekauft.
Ich verwende „Microsoft Visual C++ 2010 Express“ um die Programme zu kompilieren.
Jetzt habe ich mir als Ergänzung schon „FreeGLUT“ und „GLEW“ heruntergeladen und „Example 1.1“ (mit den Include-Dateien leicht abgeändert) abgeschrieben (als Libraries sind „freeglut.lib“ und „glew32.lib“ eingebunden):
#include
#include
#include
using namespace std;
#include "include\LoadShaders.h"
#include "include\vgl.h"
enum VAO\_IDs { Triangles, NumVAOs };
enum Buffer\_IDs { ArrayBuffer, NumBuffers };
enum Attrib\_IDs { vPosition = 0 };
GLuint VAOs[NumVAOs];
GLuint Buffers[NumBuffers];
const GLuint NumVertices = 6;
void init()
{
glGenVertexArrays(NumVAOs, VAOs);
glBindVertexArray(VAOs[Triangles]);
GLfloat vertices[NumVertices][2] = {
{ -0.90, -0.90 }, // Triangle 1
{ 0.85, -0.90 },
{ -0.90, 0.85 },
{ 0.90, -0.85 }, // Triangle 2
{ 0.90, 0.90 },
{ -0.85, 0.90 }
};
glGenBuffers(NumBuffers, Buffers);
glBindBuffer(GL\_ARRAY\_BUFFER, Buffers[ArrayBuffer]);
glBufferData(GL\_ARRAY\_BUFFER, sizeof(vertices), vertices, GL\_STATIC\_DRAW);
ShaderInfo shaders[] = {
{ GL\_VERTEX\_SHADER, "triangles.vert" },
{ GL\_FRAGMENT\_SHADER, "triangles.frag" },
{ GL\_NONE, NULL }
};
GLuint program = LoadShaders(shaders);
glUseProgram(program);
glVertexAttribPointer(vPosition, 2, GL\_FLOAT, GL\_FALSE, 0, BUFFER\_OFFSET(0));
glEnableVertexAttribArray(vPosition);
}
void display(void)
{
glClear(GL\_COLOR\_BUFFER\_BIT);
glBindVertexArray(VAOs[Triangles]);
glDrawArrays(GL\_TRIANGLES, 0, NumVertices);
glFlush();
}
int main(int argc, char \*\*argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT\_RGBA);
glutInitWindowSize(512, 512);
glutInitContextVersion(4, 3);
glutInitContextProfile(GLUT\_CORE\_PROFILE);
glutCreateWindow(argv[0]);
if(glewInit())
{
cerr
exit(EXIT\_FAILURE);
}
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Von Visual Studio 2010 Express werden mir jetzt folgende Fehler angezeigt:
1\>------ Erstellen gestartet: Projekt: triangles, Konfiguration: Release Win32 ------
1\> triangles.cpp
1\>triangles.cpp(25): error C2220: Warnung wird als Fehler interpretiert, es wurde keine object-Datei generiert.
1\>triangles.cpp(25): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(25): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(26): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(26): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(27): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(27): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(28): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(28): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(29): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(29): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(30): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>triangles.cpp(30): warning C4305: 'Initialisierung': Verkürzung von 'double' in 'GLfloat'
1\>c:\program files\microsoft sdks\windows\v7.0a\include\gl\freeglut\_std.h(618): warning C4505: 'glutCreateMenu\_ATEXIT\_HACK': Nichtreferenzierte lokale Funktion wurde entfernt
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Was kann ich jetzt machen, damit das Programm läuft?
Über hilfreiche Antworten wäre ich sehr dankbar. :smile:
LG,
nano99