![]() |
Ответ: Странное.
|
Ответ: Странное.
начало нормальное, но детали (рот, нос, уши, глаза) стоит доделать.
а так вообще хитман в silent assasin/contracts примерно на таком же уровне смоделен. в первую очередь уши опусти, у них низ примерно на уровне низа носа, а верх примерно на уровне бровей должен быть. |
Ответ: Странное.
а что за книжка?
|
Ответ: Странное.
Код:
char msgBuffer[129]; Код:
#define text(a,b,c,d) \ |
Ответ: Странное.
Mr_F_ Drawing the human head Burne Hogarth. Мне в ней нравится что о способах штриховки и особенностях выбора карандашей ни слова, только формы и еще раз формы поверхностей :)
HolyDel, из-за фигурных скобочек msgBuffer будет считаться локальной переменной внутри этих скобочек и косяка не будет при повторном вызове макроса, да? |
Ответ: Странное.
ну косяк и так и так будет лишь при переполнении буфера, если работать в одном потоке.
просто вариант с локальной переменной самодостаточен, а для варианта со статические определенной глобальной переменной нужно ее еще определить где-то. |
Ответ: Странное.
Цитата:
|
Ответ: Странное.
кстати да.
Код:
inlinte text(int x, int y, const char *foo, ...) |
Ответ: Странное.
А по-моему макрос лучше.
И если макросу в принципе пофиг какие там типы входных данных, то для функции либо писать дополнительные варианты, либо писать шаблоном. Так что на мой вкус в данном случае функции лишнее, а макрос самое то. |
Ответ: Странное.
я извиняюсь, так просто все не работает.
работает с ms-специфик функцией vsprintf Код:
inlinte text(int x, int y, const char *foo, ...) Код:
Print(L"The FPS:%d, Tris:%d, MousePos(%d,%d)",eng->GetStatistics()->GetFPS(),eng->GetStatistics()->TrisRendered(), MouseX(), MouseY()); кстати, объясните мне пожалуйста почему первая функция не работает? можно ли как то сделать не ms специфик версию? |
Ответ: Странное.
Цитата:
Кстати инлайн значит, что компилятор вместо имени функции подставляет её код. Макрос делает тоже самое но на уровне препроцессора. Так что я не вижу особой разницы. Тем более, что в интернетах вычитал, что современные компиляторы игнорируют слово инлайн и сами решают что лучше, а также посыл начинающим прогерам типа меня, сильно не умничать и не пытаться бестолку оптимизировать код с учетом того, что компилятор почти всегда справится лучше на не оптимизированном по сравнению с криво оптимизированным текстом. |
Ответ: Странное.
макросы всегда зло.
им пофиг на тип переменных, они вычисляют значения своих параметров каждый раз, и самое главное они ничего не знают об области видимости. в частности WinAPI мне портит немало нервов из за того, что назвала макрос LoadImage. А у меня так метод называется. Ошибку трудно найти сразу, потому, что препроцессор. И хорошо, что оно еще не скомпилировалось :) |
Ответ: Странное.
Цитата:
inline ? А void чего опустили? |
Ответ: Странное.
Цитата:
|
Ответ: Странное.
Цитата:
|
Ответ: Странное.
Цитата:
![]() |
Ответ: Странное.
да ладно, чо вы пристали к парню )) один раз потратит ночь на отладку программы из-за некстати объявленного макроса, и не будет их пользовать больше в случаях, где можно без них обойтись :)
Цитата:
|
Ответ: Странное.
HolyDel, в общем э...
CSurface *surf = new CSurface(24,36); Смотрел на примере куба. Перовое число это количество точек в поверхности. Второе я не понял. Что это? Из конструктора сplane я не догнал что это и как мне посчитать кол-во этих индексов, если я захотел сделать свой примитив. Как? indices_ = new unsigned char[count_indices_*index_size_]; ZeroMemory(indices_,count_indices_ * index_size_); vao_ =0; vbo_ =0; uabo_ =0; ibo_ =0; Или я не туда лезу? Справку я не понял :) |
Ответ: Странное.
второе - это число индексов. Так как сейчас единственный способ рисования сюрфейсов - это triangles list, то его можно понимать как кол-во триугольников * 3.
Те сюрфейсы, что ты смотришь - это часть движка. Я могу ползоваться реализацией (потомучто наглый), а пользователи не должны, для них есть интерфейс. На пользовательской части сюрфейс можно создать както так: Цитата:
|
Ответ: Странное.
Испытал проблемы с прорисовкой моего треугольника.
Оно стало рисоваться только после добавления моей поверхности к сцене из стандартного примера. Так и надо? Или просто мой треугольник не попадал в кадр? Код:
#include <axelynx/axelynx.h> |
Ответ: Странное.
да. это правильно.
когда сюрфейс заполнен - это лишь заполненная область видеопамяти. чтобы сюрфейс рендерился - его надо добавить в сцену. сюрфейс можно добавить тыщу раз в сцену. это будет тысяча инстанций одного сюрфейса. У них может быть свой материал, своя матрица трансформации. Но единая геометрия. при этом ему надо назначить шейдер. то что щас работает - это глюк. скорее всего для каждого типа геометрии будут свои шейдеры по умолчанию. Чтобы снизить кол-во кода для вывода одного кубика. нормали пока считать не умеем. вобщем чтобы хоть что то увидеть надо сделать такое: * инициализировать окно * создать сцену * создать в сцене камеру * создать геометрию * добавить геометрию в сцену * назначить шейдер объекту * отрендерить сцену * флипнуть буфера как в блице одним CreateCube():Flip() не обойтись (( |
Ответ: Странное.
|
Ответ: Странное.
Цитата:
Цитата:
если тебе нравится генерировать примитивы, почему бы тебе не помочь проекту, и не написать генерацию сферы, конуса, торусов и т.д. (на свое усмотрение) в виде стандартной библиотеки примитивов. Я могу дать тебе доступ к SVN-ке на запись. |
Ответ: Странное.
Цитата:
Цитата:
|
Ответ: Странное.
Сфера.
![]() Код:
Surface* sphere(int seg,float radius, Engine *eng){ |
Ответ: Странное.
Цитата:
Engine *eng = Engine::Instance(); чтобы пользоваться CSurface - надо писать в Cube.cpp например. Чтобы код оставался в длл-ке. Проще всего было бы использовать SVN-ку (благо, тебе надо лишь поставить tortoiseSVN и мне зарегить тебя) ибо в последних версиях sdk информация для системы контроля версий катается вместе с движком. Либо ты можешь включить какой нибудь файл, скажем, dsd_surfaces.cpp в движок, и писать код там. Тестируя на каком-нибудь сэмпле. А как наиграешься. передать его любым способом мне :) |
Ответ: Странное.
![]() Код:
Surface* torus(int resol, int vresol, float radius, float inradius){ |
Ответ: Странное.
Цитата:
|
Ответ: Странное.
ХолиДел, а как мне получать данные о точках и полигонах поверхности?
int q_vert=surf->CountVertices(); int q_tris=surf->CountTriangles(); Это я узнал количество точек и полигонов. А как мне узнать какому полигону какие точки принадлежат и как мне из VertexInfo данные точек читать? |
Ответ: Странное.
в текущем SDK нет такого функционала к сожалению ((
в той версии, что в СВН-ке, уже есть: Код:
for(int i=0;i<cube->CountTriangles();++i) |
Ответ: Странное.
Тогда уж и обновление нормалей добавить надо. Я как раз такую функцию и хотел запилить. :)
|
Ответ: Странное.
такие функции лучше все же внутри движка пилить. даже лучше внутри класса, чтобы не тратить время на лишних виртаульных вызовах.
|
Ответ: Странное.
А сегодня в моем бложике день петросяна. :)
Цитата:
|
Ответ: Странное.
![]() |
Ответ: Странное.
![]() Код:
Имел странные глюки :) Получилось почему-то только с 4 раза. И то осталось впечатление, что я движок где-та наебал :)) |
Ответ: Странное.
![]() Код:
Surface* Cone(int capSeg, int heightSeg, float radius, float height){ |
Ответ: Странное.
Цитата:
Цитата:
|
Ответ: Странное.
Цитата:
А про ошибку в конструкторе я не допер :) за полгода с++ стал забываться :) Но сейчас кодинг вроде вновь интересен стал. |
Ответ: Странное.
![]() Немножко другая сфера. Код:
Surface* coolSphere(int segments){ плюс не понял как правильно текстуры грузить PHP код:
|
Ответ: Странное.
текстура как то странно натянута. так и задумывалось?
проблема с ресурсами в том - что он ищет файлы в папке проекта (при дебаге). я не нашел в кодеблоксах где настроить этот параметр. поэтому теперь выбор - или складывать все ексешники и прочее барахло в папку с проектами (и в мсвс визарде также), соответственно переименовывать их, например coolsphere_d.exe (все ето будет ткже делать визардом), или возиться с путями. |
Ответ: Странное.
так и задумывалось :) плюс по диагоналям там чу-чуть бубном постучать надо(это на них максимальное искажение). К ночи может выйдет повторить тот генератор камней-планет.
Это в общем плоскость 1х2 и первая часть обернута вокруг полусферы с полюсом в (0.5 0.5), и вторая часть обернута по той же сфере. Это чтобы карту шума накладывать можно было без искажений у полюсов. Если научусь массив флоатов переводить быстро в картинку то можно будет сразу автоматом считать текстуру по которой нормали отворачивать, чтобы рельеф имитировать, карту смещений и заодно текстуру делать наподобие той что была в последней версии генератора поверхности земли под хорс. В общем занятный примитив должен выйти, причем только кодом. А учитывая как я пишу код хрен кто скопировать сможет если даже захочет :))) |
Ответ: Странное.
Цитата:
Код:
float my_floats[512][512]; |
Ответ: Странное.
axmath.h
PHP код:
|
Ответ: Странное.
Цитата:
Код:
srand(42); |
Ответ: Странное.
|
Ответ: Странное.
вроде работает. только у тебя там какаие - то странные, неправильные стыки между полусферами.
|
Ответ: Странное.
я в курсе. это оно в черне заработало.
Теперь буду пилить и сам шум и геометрию сферы, надо ее по диагоналям более разреженной сделать, а шов из-за кривого генератора шума. там где смещения читаются для последней строки стоят немного не те значения. карта просто шире слегка чем количество точек в меше. Плюс я тупее в с++ стал. сильно тупей. по этому и исходник пока не приложил, там такой ужас :)))) |
Ответ: Странное.
|
Ответ: Странное.
Цитата:
Цитата:
![]() вот тут это фиксится |
Ответ: Странное.
Цитата:
Цитата:
у меня такая фигня случается если окно удалить - и заново создать. в процессе фиксанья. |
Ответ: Странное.
|
Ответ: Странное.
Код:
c->SetBlendMode(BM_ALPHA); |
Ответ: Странное.
Цитата:
![]() не получается так ничего.:dontknow: |
Ответ: Странное.
попробуй пока явно поля позадовать:
Код:
desc.width = 512; |
Ответ: Странное.
Цитата:
![]() неа, так тоже не работает :)) Может что-то из папки "source" заинклюдидь надо? ибо сам двиг собирался у меня из исходников без проблем. |
Ответ: Странное.
если конструктор пустой по не нужно ставить скобки () после имени переменной, если их ставить то получается что декларируешь функцию, а не создаёшь экземпляр класса на стеке
|
Ответ: Странное.
jimon уже написал в чем дело :)
Цитата:
если хочешь - я дам тебе доступ к сурсам на ассембле. |
Ответ: Странное.
Цитата:
![]() И еще, как мне обычную текстуру сделать с argb или как там, в общем 4 канала по 256 цветов? Мне показалось или движок без проблем прожевывает меши с 2-3 миллионами точек и 4 миллионами полигонов в одной поверхности? Кстати если надо могу сбацать бесшовный шум типа того что на текстуре с кружками, не бесшовный и хрень которая будет показывать любой участок из здоровенной карты шума в несколько лямов пикселей шириной. Последняя хрень есть почти готовая, выдает по координатам высоту. |
Ответ: Странное.
Цитата:
Цитата:
Код:
desc.bpc = 1; Код:
desc.bpc = 4; Код:
desc.cpp = 1; Цитата:
|
Ответ: Странное.
![]() вроде научился раскрашивать меш поприкольней. ХолиДел, вот рисовать текстуры я теперь умею, а обратно построить массив данных из текстуры тоже можно? MouseHit() и MouseDown() чето найти никак не могу. И аналоги типа TForm есть? теперь по иксу "x" в рандомном месте на меше появится чето типа кратера, с глюками если попадает на края меша. по пробелу сделать новую планету. зы: а из далека уже ничего :) если добавить меш для воды, облаков и вывернутый для атмосферы вообще красотища будет. |
Ответ: Странное.
Цитата:
Цитата:
можно получить матрицу трансформации ноды(пивота) и множить нужный вектор на нее. Цитата:
|
Ответ: Странное.
|
Ответ: Странное.
сэмплеры называются фиксированными именами:
Код:
sampler2D texture0 Код:
ent->SetTexture(some_texture,0); полупрозрачность так: Код:
ent->SetBlend(BM_ALPHA); |
Часовой пояс GMT +4, время: 22:30. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot