Я пытаюсь заставить OpenGL работать с gtk +. Казалось, что рабочий размер я смог очистить цвет фона. Однако, когда я пошел рисовать что-то, его там нет. Я что-то упускаю. Я смотрю на 10, 10, 10, и я смотрю на происхождение. Я должен увидеть задний треугольник около источника.OpenGL с Gtk +, формы не рисуются, несмотря на очищение фона
#include <gtk/gtk.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <iostream>
GtkWidget* wnd;
GtkWidget* glarea;
static gboolean render(GtkGLArea *area, GdkGLContext *context)
{
int w = gtk_widget_get_allocated_width(GTK_WIDGET(area));
int h = gtk_widget_get_allocated_height(GTK_WIDGET(area));
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(180, (double)w/(double)h, 0.1, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(10, 10, 10, 0, 0, 0, 0, 1, 0);
glClearColor(1, 1, 1, 0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0, 0, 0);
glBegin(GL_TRIANGLES);
glVertex3f(0, 0, 0);
glVertex3f(-1, 2, -1);
glVertex3f(1, 3, 2);
glEnd();
return TRUE;
}
int main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
glarea = gtk_gl_area_new();
gtk_container_add(GTK_CONTAINER(wnd), glarea);
g_signal_connect(wnd, "destroy", gtk_main_quit, 0);
g_signal_connect(glarea, "render", G_CALLBACK(render), NULL);
gtk_widget_show_all(wnd);
gtk_main();
return 0;
}
Почему 180 градусов FOV вместо чего-то вроде 60 или 90? – genpfault
Мне было 60 лет. Я открыл его, чтобы посмотреть, смогу ли я найти форму. Имел ту же проблему с 60 – chasep255
. Ваш [код рисования ядра в GLUT MCVE (с исправлением FOV)] (http://pastebin.com/qaDRT4Cy) кажется [отлично работает] (http: //i.stack.imgur .com/fIusx.png) в моей системе. – genpfault