Не рисует треугольник в opengl
| |
afq | Дата: Понедельник, 30 Октября 2017, 20:39 | Сообщение # 1 |
Разработчик
Сейчас нет на сайте
| код на github https://github.com/xverizex/Sixie/blob/master/main.c Выпишу сюда две функции
Код void draw_triangles () { glBegin ( GL_TRIANGLES ); glVertex2f ( 0.0f, 0.0f ); glVertex2f ( 25.0f, 25.0f ); glVertex2f ( 50.0f, 0.0f );
glVertex2f ( -50.0f, 0.0f ); glVertex2f ( -75.0f, 50.0f ); glVertex2f ( -25.0f, 0.0f ); glEnd (); glFlush (); }
gboolean render ( GtkGLArea *area, GdkGLContext *context, gpointer user_data ) { glClearColor ( 0.44, 0.44, 0.44, 1.0 ); glColor3f ( 1.0f, 1.0f, 1.0f ); glClear ( GL_COLOR_BUFFER_BIT );
draw_triangles ();
return TRUE; }
В документации сказано что после выставлении цвета, можно нарисовать объект.
|
|
| |
Vuvk | Дата: Вторник, 31 Октября 2017, 07:03 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Попробуй нарисовать в рамках логических координат: -1...1 Установлены ли параметры проекционной, модельной матриц?
--- Посмотрел код, там такого и в помине нет. Попробуй такое:
Код void draw_triangles () { glBegin(GL_TRIANGLES); glColor3f(1, 0, 0); glVertex3f(-1, -1, -1);
glColor3f(0, 1, 0); glVertex3f(1, -1, -1);
glColor3f(0, 0, 1); glVertex3f(0, 1, -1); glEnd(); glFlush (); }
gboolean render ( GtkGLArea *area, GdkGLContext *context, gpointer user_data ) { glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45, (double)WIDTH / HEIGHT, 0.1, 1000);
glMatrixMode(GL_MODELVIEW); glLoadIdentity();
glClearColor ( 0.44, 0.44, 0.44, 1.0 ); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
draw_triangles ();
return TRUE; }
Я в гтк не шарю, но после draw_triangles должен быть ещё SwapBuffers или что-нибудь такое
Сообщение отредактировал Vuvk - Вторник, 31 Октября 2017, 07:12 |
|
| |
afq | Дата: Вторник, 31 Октября 2017, 16:03 | Сообщение # 3 |
Разработчик
Сейчас нет на сайте
| Vuvk, невыходит.
|
|
| |
Ordan | Дата: Среда, 01 Ноября 2017, 04:31 | Сообщение # 4 |
Главный зомби
Сейчас нет на сайте
| afq, вы наверное glTranslatef потеряли где то
Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Мои проекты ТЫК Мои видяхи на ютубэ ТЫК
Если ты споришь с идиотом, вероятно тоже самое делает и он.
|
|
| |
Vuvk | Дата: Среда, 01 Ноября 2017, 06:27 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| Не поленился и накидал отрисовку треугольника. Правда на Си и SDL2. Но везде одно и то же...
Код #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h>
#include "GL/gl.h" #include "GL/glu.h" #include "SDL2/SDL.h"
#define WIDTH 1024 #define HEIGHT 768
bool quit = false; SDL_Window* sdlWindow = NULL; SDL_Event sdlEvent; SDL_GLContext sdlGlContext;
void draw_triangles () { glBegin(GL_TRIANGLES); glColor3f(1, 0, 0); glVertex3f(-1, -1, -3);
glColor3f(0, 1, 0); glVertex3f(1, -1, -3);
glColor3f(0, 0, 1); glVertex3f(0, 1, -3); glEnd(); glFlush (); }
void render () { glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45, (double)WIDTH / HEIGHT, 0.1, 1000);
glMatrixMode(GL_MODELVIEW); glLoadIdentity();
glClearColor ( 0.44, 0.44, 0.44, 1.0 ); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
draw_triangles ();
SDL_GL_SwapWindow(sdlWindow); }
#undef main int main(int args, char* argv[]) { if (SDL_Init(SDL_INIT_VIDEO) < 0) { printf("Couldn't init SDL2! Error: %s\n", SDL_GetError()); return 1; }
sdlWindow = SDL_CreateWindow("Example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
if (sdlWindow == NULL) { printf("Couldn't init SDL2-window! Error: %s\n", SDL_GetError()); return 2; }
sdlGlContext = SDL_GL_CreateContext(sdlWindow);
while (!quit) { render ();
while(SDL_PollEvent(&sdlEvent) == 1) { if (sdlEvent.type == SDL_KEYDOWN) { switch (sdlEvent.key.keysym.sym) { case SDLK_ESCAPE : quit = true; break;
default: break; } }
if (sdlEvent.type == SDL_QUIT) { quit = true; } }
SDL_Delay(1); }
SDL_Quit();
return 0; }
Сообщение отредактировал Vuvk - Среда, 01 Ноября 2017, 06:29 |
|
| |
afq | Дата: Вторник, 07 Ноября 2017, 03:40 | Сообщение # 6 |
Разработчик
Сейчас нет на сайте
| Vuvk, Ordan, пришлось qt учить. Посмотрю как там. Добавлено (03 ноября 2017, 21:21) --------------------------------------------- Vuvk, Ordan, получилось с помощью qt. Только там glVertex2f надо было задавать ( 100, 200 ); а не ( 1, 0 ); При малых значениях вообще не видно. Вот снимок.
Добавлено (07 ноября 2017, 03:40) --------------------------------------------- Ordan, Vuvk, какие координаты нужно задать для gluLookAt, чтобы видно было glVertex3f ( 0.0, 0.0, 0.0 ); ?
|
|
| |
Vuvk | Дата: Вторник, 07 Ноября 2017, 13:56 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| afq, ну например 0, 0, 10, 0, 0, 0, 0, 1, 0
|
|
| |
afq | Дата: Пятница, 10 Ноября 2017, 05:36 | Сообщение # 8 |
Разработчик
Сейчас нет на сайте
| Vuvk, о спасибо. Добавлено (10 ноября 2017, 05:36) --------------------------------------------- Vuvk, Ordan, обратите внимание на https://gcup.ru/forum/62-99402-1
|
|
| |
|