Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 17.06.2014, 23:28   #121
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: OpenGL

Я решил что мне пора за opengl основательно взяться.
Так вот сегодня начал разбираться и непонятна такая вещь:
допустим мне надо определённый ректангл закрасить цветом с помощью glClear. В доках написано что можно юзать glScissor.
Ок я сделал так:
glEnable( GL_SCISSOR_TEST );
glScissor( 100, 100, 50, 50 );
glClear( GL_COLOR_BUFFER_BIT );
glDisable( GL_SCISSOR_TEST );
Но закрашивается весь экран целиком.
Видимо я что то упустил.
(Offline)
 
Ответить с цитированием
Старый 17.06.2014, 23:57   #122
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: OpenGL

не знаю точно насчёт GL, но вот из dx10-11 убрали фичу клеара ректанглов (в 9 была) по каким-то причинам что типа железо так не умеет нормально делать все равно. советуют рисовать квад с цветом очищения)
т.к. проблема вроде завязана на хардваре, то и в gl возможно то же.
---
бррр... похоже это было только в 10, в 11 снова можно клеарить ректанглы.
---
а, нет, в 11 тоже нельзя, но можно в 11.1
---
могу точно сказать что в юнити на дх11 клеар делается рисованием квадов
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Samodelkin (18.06.2014)
Старый 18.06.2014, 00:05   #123
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: OpenGL

OpenGL очень запутанная вещь!

Собственно да, поэтому и спрашиваю, в d3d9 можно не просто рект закрасить, но и передать массив ректов за один вызов Clear.
(Offline)
 
Ответить с цитированием
Старый 18.06.2014, 00:18   #124
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: OpenGL

Да походу дела на glClear скиссор не влияет, потому что квад обрезается скиссором, а заполнение цвета - нет.
(Offline)
 
Ответить с цитированием
Старый 18.06.2014, 01:06   #125
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: OpenGL

А тут пишут что все ок: http://gamedev.stackexchange.com/que...e-of-glscissor
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Samodelkin (18.06.2014)
Старый 18.06.2014, 01:22   #126
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGL

у меня работало.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
moka (18.06.2014), Samodelkin (18.06.2014)
Старый 18.06.2014, 01:36   #127
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: OpenGL

Ну что, значит у меня левый opengl =).
Дальше поразбираюсь в нём чтоб хоть как то ориентироваться, тогда может быть попробую поэкспериментировать со скиссором.
(Offline)
 
Ответить с цитированием
Старый 18.06.2014, 03:03   #128
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGL

у меня правда это было на мульткамерах.
там помимо scissor-a был еще и glViewport
(Offline)
 
Ответить с цитированием
Старый 18.06.2014, 13:47   #129
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: OpenGL

glViewport точно также - работает для выводимых примитивов, но glClear всё равно закрашивает весь экран.
----
Вот еще вопрос: контекст можно создать например через freeglut или через wgl функции winapi.
В последних больше всяких настроек, но вообще нужно ли такое количество для среднестатистического opengl движка?
И соответственно в Linux чего лучше использовать?
(Offline)
 
Ответить с цитированием
Старый 03.10.2016, 18:18   #130
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: OpenGL


Как включить АА (антиалиазинг) ??
Рисую квадами, так как нужно задавать толщину линии, а glLineWidth не работает.

glEnable(GL_POLYGON_SMOOTH);
    
glEnable(GL_LINE_SMOOTH);
    
glEnable(GL_BLEND);
    
glBlendFunc(GL_SRC_ALPHAGL_ONE_MINUS_SRC_ALPHA);
    
glLineWidth(0.5f); 
это вообще никак не помогает.
Рисую без шейдеров, так как они для задачи нафиг не нужны, но отрисовать на OpenGL нужно.

И пинайте меня, но я рисую без VBO, так как не хотел запариваться . Само рисование:
void GLRender() {
    if (
_hDC) {

        
glClearColor(bgColor[0] / 256.0fbgColor[1] / 256.0fbgColor[2] / 256.0f0.0f);
        
glClear(GL_COLOR_BUFFER_BIT);
    
        
glLoadIdentity();
        
glOrtho(0_w0_h, -11);
        
        
glPushMatrix();
        
        
DrawLines();
    
        
glPopMatrix();

        
SwapBuffers(_hDC);
    }
}

void DrawCustomLine(GLLine line) {

    
glColor3ub(line.color[0], line.color[1], line.color[2]);

    
float nx line.x2 line.x1;
    
float ny line.y2 line.y1;
    
float len sqrtf(nx*nx ny*ny);
    
nx /= len *2;
    
ny /= len *2;

    
//0__1
    //I  I
    //3__2
    
glVertex2f(line.x1 floor(line.thinkness ny), line.y1 ceil(line.thinkness nx));
    
glVertex2f(line.x1 ceil(line.thinkness ny), line.y1 floor(line.thinkness nx));
    
    
glVertex2f(line.x2 ceil(line.thinkness ny), line.y2 floor(line.thinkness nx));
    
glVertex2f(line.x2 floor(line.thinkness ny), line.y2 ceil(line.thinkness nx));

}

void DrawLines() {

    
glBegin(GL_QUADS);

    for (
size_t i 0lineBuffer.size(); i++) {

        
DrawCustomLine(lineBuffer[i]); 
    }

    
glEnd();

А если через VBO, то подскажите как отрисовать кучу Квадов разного цвета передав один массив.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 03.10.2016, 19:41   #131
Mhyhr
Бывалый
 
Регистрация: 06.04.2009
Сообщений: 612
Написано 276 полезных сообщений
(для 858 пользователей)
Ответ: OpenGL

Если не по доисторическому, то так или иначе надо хоть простейший шейдер таки написать, и передавать в него координаты и цвет. Это не сложно погугли simple opengl shader example и довавь свой uniform.

К слову glLineWidth - устаревшая функция.
(Offline)
 
Ответить с цитированием
Старый 03.10.2016, 20:14   #132
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: OpenGL

pfffff
    glColor4ub(line.color[0], line.color[1], line.color[2],64);

    float d = 0.4;
    for(int i=0;i<4;i++){
      float dx = sin(i*1.6)*d;
      float dy = cos(i*1.6)*d;
        glVertex2f(dx+line.x1 - floor(line.thinkness * ny), dy+line.y1 + ceil(line.thinkness * nx));
          glVertex2f(dx+line.x1 + ceil(line.thinkness * ny), dy+line.y1 - floor(line.thinkness * nx));
        glVertex2f(dx+line.x2 + ceil(line.thinkness * ny), dy+line.y2 - floor(line.thinkness * nx));
          glVertex2f(dx+line.x2 - floor(line.thinkness * ny), dy+line.y2 + ceil(line.thinkness * nx));
    }

thickness
__________________

(Offline)
 
Ответить с цитированием
Старый 04.10.2016, 00:48   #133
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: OpenGL

Это понятно, как мне линию сгладить?
Anti-Alias е включается.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 04.10.2016, 11:03   #134
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: OpenGL

Сообщение от RegIon Посмотреть сообщение
Это понятно, как мне линию сгладить?
Anti-Alias е включается.
Ну таки что-то неправильно делаешь раз не включается. Еще можно текстуру натянуть на квады, но не уверен что получится на тонких линиях.
Что касается VBO - надо юзать glBufferData, glEnableVertexAttribArray и glVertexAttribPointer (но я не уверен что в последних версиях ОГЛ это труъ путь, хотя в любом случае лучше чем сейчас у тебя). А там хоть каждый вертекс рисуй разным цветом.
(Offline)
 
Ответить с цитированием
Старый 04.10.2016, 15:07   #135
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: OpenGL

void GLSetFontBitmap(const BYTEbitmapint widthint heightint pixel_size) {
    
glGenTextures(1, &fontTexture);
    
height 2;
    
width 2;
    
BYTE *data = new BYTE[3]{
        
255,0,00,255,0,
        
255,0,00,0,255
    
};

    
glBindTexture(GL_TEXTURE_2DfontTexture);
    
glTexImage2D(GL_TEXTURE_2D0GL_RGBheightwidth0GL_RGBGL_UNSIGNED_BYTEdata);
    
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MAG_FILTERGL_NEAREST);
    
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MIN_FILTERGL_NEAREST);

    
glActiveTexture(GL_TEXTURE0);

Почему вылетает MAV при вызове glActiveTexture()??



Студия 15, GL из под коробки, glew с NuGet

UPD. Собрал отдельный проект чисто на С++, все равно вышибает на том же месте.
Проект:
https://1drv.ms/u/s!AsK_zL9knxgkhiSs321g6ajyy_Ec
__________________
Сайт: http://iexpo.ml

Последний раз редактировалось RegIon, 04.10.2016 в 17:05.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL 3 HolyDel C++ 63 11.12.2014 22:23
Help:::OpenGl!!! zheland 3D-программирование 30 08.05.2008 20:52
Cos и Sin в OpenGL! pipns Delphi 8 19.11.2007 10:14
OpenGL 3.0 HolyDel C++ 10 18.11.2007 13:11


Часовой пояс GMT +4, время: 14:43.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com