OPENGL, C++, SDL2 - Не рисуется
#include <SDL2/SDL.h>
#include <GL/gl.h>
const float width=1024;
const float height=800;
const float pos_x=SDL_WINDOWPOS_CENTERED;
const float pos_y=SDL_WINDOWPOS_CENTERED;
SDL_Window *window;
SDL_Event event;
int main(){
window=SDL_CreateWindow("Window", pos_x, pos_y,
width, height, SDL_WINDOW_OPENGL);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
/*SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK,
SDL_GL_CONTEXT_PROFILE_CORE);*/
SDL_GLContext context = SDL_GL_CreateContext(window);
while(window!=NULL){
while(SDL_PollEvent(&event)){
if(event.type==SDL_QUIT)
window=NULL;
}
//glClearColor(255, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glColor3f(200, 0, 0);
glVertex2f(10, 10);
glVertex2f(20, 10);
glEnd();
SDL_GL_SwapWindow(window);
}
}
Хочу линию нарисовать, но не рисуется, поч?
Ответы (2 шт):
вполне возможно что надо сменить на версию 3.0. у меня например поддерживалась sdl2 только 3.0 версию. и еще, хотя sdl2 всё равно, какую вы установите версию. прикол в том что в 3 версии glBegin и glEnd устарели. они были только во второй версии. в 3 версии надо рисовать с помощью шейдеров. хотя я еще рисовал без шейдеров с помощью функций, которые забыл как называются уже, потому что в последнее время только с помощью шейдеров писал. я думаю что sdl2 может быть нарисует ваши линии. короче поменяйте на 3.0.
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
Я скопировал Ваш код и поменял следующее
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
а также выставил более толстую линию и поправил координаты
glLineWidth(10); // сделаем линии очень толстыми, что бы увидеть
glBegin(GL_LINES);
glColor3f(200, 0, 0);
glVertex2f(0, 0); // рисуем с центра
glVertex2f(1, 1); // в верхний правый угол
glEnd();
SDL_GL_SwapWindow(window);
И увидел линию с центра. Если рисовать линию с 10,10 в 10,20, то это за пределами экрана и ничего не будет видно.