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

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

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

Ответ
 
Опции темы
Старый 20.08.2013, 16:00   #106
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGL

у парня жеское 2д.
ему пока ненужны ни матрицы проекции ни что то другое.

gl_Position = vec4(vposition*mat2(cos(angle),-sin(angle),sin(angle),cos(angle)),0.0,1.0);
vposition у тебя в -1..1, или как? так то код правильный. для спрайта в координатах 0,0 конечно. возможно проблема где то еще. покажи скрин или лучше демку.

Ты пытаешься повернуть вершину уже в скрин-спейсе, и тут два варианта - либо ты в шейдере перед этим множишь на viewproj либо ещё до шейдера это делаешь (на CPU).
ему ничего не нужно проецировать. у него объекты итак в скринспейсе.

кстати, в новой супербиблии, как раз все начинается тупо с вывода точки. даже не треугольника. зато сразу понятно где ноль)) без матриц, без всего. этим книга и хороша. для новичка там очень правильная последовательность обучения на мой взгляд.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (20.08.2013)
Старый 20.08.2013, 17:10   #107
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: OpenGL

А, и ещё вопрос. Рисовать линию как 2 треугольника нормально? Я знаю, что OGL поддерживает свой вывод линий, но тогда придется прибегнуть уже к другому DIP.
(Offline)
 
Ответить с цитированием
Старый 20.08.2013, 17:19   #108
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGL

вывести линию может быть дороже чем два треугольника.

+ треугольниками гибче, линия может быть любой ширины, ее можно затекстурить, и т.д.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pozitiffcat (22.08.2013)
Старый 22.08.2013, 17:51   #109
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: OpenGL

запилил за пол дня супер легковесный 2д движок на опенгл 2 контексте, без матриц (как тебе нужно), можно вращать, правда на цпу. Еще можно выводить отдельные части текстуры (атлас), еще батчи есть.

Репо
https://bitbucket.org/pozitiffcat/ste

Умеет только TGA со сжатием или без. Можно расширять своими классами для загрузки файлов и конвертирование изображений. Так сказать движок открыт для расширений.

Делал для себя (вчера понял что надо сделать), чтоб легко писать под ios, android. Собирается на mac и linux посредством cmake

есть скрипт сборки для линукса. Соберет статически либу и тестовое приложение.
В убунте нужно sudo apt-get install freeglut3-dev

Библиотека работает на контексте, тоесть можно собрать без GLUT и внедрять в любой контекст, Qt, Android, iOS, SDL и т.п.

пример кода:
#include "steGlutApp.h"
#include "steRender.h"
#include "steImage.h"
#include "steFileStream.h"
#include "steTGAImageLoader.h"
#include "steDrawImageData.h"
#include "steBatch.h"

class MyApp : public ste::GlutApp
{
public:
    virtual void onInit()
    {
        m_render = createRender();
        m_render->setScreenSize(240, 320);
        m_render->setClearColor(0.3f, 0.4f, 0.5f);

        m_imageLoader = new ste::TGAImageLoader();

        m_stream = new ste::FileStream("test_c.tga", ste::FileOpenReadMode);

        m_image = m_render->createImage(m_imageLoader, m_stream);
    }

    virtual void onFrame()
    {
        m_render->clear();

        static float r = 0;
        r += 0.01;

        ste::Batch batch;

        ste::DrawImageData data;
        data.frame = ste::rect(0.5 ,0.5, 0.5, 0.5);
        data.size = ste::vec2(100, 100);
        data.position.x = 50;
        data.position.y = 100;
        data.center.x = 0.5;
        data.center.y = 0.5;
        data.centerIsDrawPoint = true;
        data.rotation = r;
        batch.addImage(data);

        data.frame = ste::rect(0 ,0.5, 0.5, 0.5);
        data.position.x = 50;
        data.position.y = 200;
        data.center.x = 0.0;
        data.center.y = 0.0;
        data.rotation = 0;
        batch.addImage(data);

        m_render->drawImage(m_image, &batch);
    }

    virtual void onClose()
    {
        delete m_render;
        delete m_image;
        delete m_imageLoader;
        delete m_stream;
    }

private:
    ste::Render *m_render;
    ste::Image *m_image;
    ste::TGAImageLoader *m_imageLoader;
    ste::FileStream *m_stream;
};

int main()
{
    MyApp app;
    app.init(240, 320);
    app.start();
    return 0;
}
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (22.08.2013)
Старый 23.08.2013, 01:09   #110
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGL

Слушай, друг, а ты для cmake сам собирал етот CMakeList.txt или какой-то тулзой его можно выгрузить со студии?
(Offline)
 
Ответить с цитированием
Старый 23.08.2013, 10:18   #111
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: OpenGL

Сообщение от HolyDel Посмотреть сообщение
Слушай, друг, а ты для cmake сам собирал етот CMakeList.txt или какой-то тулзой его можно выгрузить со студии?
всегда сам. там же легко.
(Offline)
 
Ответить с цитированием
Старый 23.08.2013, 15:53   #112
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGL

у меня 1586 файла в сурсах (из них только 175 мои, остальные библиотеки). очень муторно вручную будет собирать((.
(Offline)
 
Ответить с цитированием
Старый 23.08.2013, 22:26   #113
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: OpenGL

ты из cmake можешь вызывать сборку сторонних либ, их не обязательно переписывать на cmake.
(Offline)
 
Ответить с цитированием
Старый 26.08.2013, 02:02   #114
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: OpenGL

Вопрос по альфе. Если у нас два триса с альфой, рисуются они за один дип и касаются друг друга, почему не наблюдается прозрачность? Дело точно не в передаче шейдеру, вручную вбивал 0.5 на альфе, все равно трисы полностью непрозрачны.
(Offline)
 
Ответить с цитированием
Старый 26.08.2013, 02:13   #115
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: OpenGL

штуки с альфой надо сортировать от дальних к ближним.
рисовать полупрозрачную невыпуклую геометрию в 1 дип фигня выйдет с половины ракурсов.
а два пересекающихся крестом триангла вообще нормально не сделаешь.

ну и да, надо блендинг отдельно в апи включать, а не только в шейдере писать альфу, режимов блендинга много разных.
не знаю где оно в ГЛ, юзаю ДХ =]
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (27.08.2013)
Старый 26.08.2013, 02:13   #116
jimon
 
Сообщений: n/a
Ответ: OpenGL

Блендинг включил ? =)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (27.08.2013)
Старый 26.08.2013, 03:56   #117
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: OpenGL

Сообщение от Nikich Посмотреть сообщение
Вопрос по альфе. Если у нас два триса с альфой, рисуются они за один дип и касаются друг друга, почему не наблюдается прозрачность? Дело точно не в передаче шейдеру, вручную вбивал 0.5 на альфе, все равно трисы полностью непрозрачны.
Дептх тест отруби.
У меня это делается так:

gl.disable(gl.DEPTH_TEST);

В "большом" OGL наверное как-то похоже.

Вообще см. порядок рендера. Бленденные объекты надо рендерить после всех остальных. Вообще скриншоты бы неплохо, но в целом диагноз: без сортировки с альфой получишь дерьмецо.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (27.08.2013)
Старый 27.08.2013, 22:20   #118
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: OpenGL

http://www.opengl.org/sdk/docs/man/x...lDepthFunc.xml
тебе в помощь, меня когда-то выручало, когда партиклы рисовал

а вообще перед отрисовкой всякой херни, для которой временно нужно отключить глубину, но что бы она не перекрывала существующую юзай это
http://www.opengl.org/sdk/docs/man/x...lDepthMask.xml
(Offline)
 
Ответить с цитированием
Старый 28.10.2013, 00:46   #119
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: OpenGL

Есть ли годная библиотека/алгоритм для создания атласа из текстурок налету? Всё таки хочется сделать весь рендер в один DIP, однако рендер текста с FreeType явно требует множества DIP(умельцы на http://en.wikibooks.org/wiki/OpenGL_...t_Rendering_01 вообще предлагают каждый символ за отдельный DIP рисовать).
(Offline)
 
Ответить с цитированием
Старый 28.10.2013, 09:19   #120
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: OpenGL

Сообщение от Nikich Посмотреть сообщение
Есть ли годная библиотека/алгоритм для создания атласа из текстурок налету? Всё таки хочется сделать весь рендер в один DIP, однако рендер текста с FreeType явно требует множества DIP(умельцы на http://en.wikibooks.org/wiki/OpenGL_...t_Rendering_01 вообще предлагают каждый символ за отдельный DIP рисовать).
При создании текста строишь буффер с заданными текстурными координатами на каждую букву из bitmap шрифта, и рисуй за один дип. Я так целую страницу текста за 1 дип рисовал. Только тебе придется распарсить freetype2 на bitmap текстуру
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pozitiffcat за это полезное сообщение:
Nikich (28.10.2013), pepel (27.12.2013)
Ответ


Опции темы

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

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, время: 18:11.


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