Перейти к содержанию
Fire Monkey от А до Я

тим адвайтов

Пользователи
  • Постов

    11
  • Зарегистрирован

  • Посещение

Весь контент тим адвайтов

  1. Вопрос решён, хотя и не так, как хотелось бы. Надо самому заранее сделать Tile с помощью промежуточного Bitmap-а, примерно так: b:=tbitmap.Create; r:=trect.Create(0,0,b.width,b.Height); с размерами той области, куда его нужно поместить. Далее в цикле налепить исходный битмап на промежуточный.: while dh > 0 do begin ... b.CopyFromBitmap(ish.Bitmap, r, i*ish.Bitmap.Width, j*ish.Bitmap.Height); dh:= dh-ish.Bitmap.Height;... ... (то же с dw)... И, наконец, присвоить его материалу: lightmaterialsource1.Texture.Assign(; И так со всеми частями конструкции. Процедурка небольшая, но, по идее, абсолютно ненужная, если бы не глюк.
  2. Да, действительно, с этим файлом компилится под андроид и запускается. Спасибо,Ярослав! Но картинка осталась прежняя, несмотря на сделанные изменения.
  3. Например, FRenderBuf: GLuint; GLuint - "undecrared identifier". И ещё куча ошибок того же типа. Все, похоже, имеют отношение к OpenGL. Дело в том, что я привык, что в секции uses обычно есть все модули, в которых объявлены типы, но тут в толк не возьму, что ещё надо прицепить. Наверное, это зависит от целевой платформы? Компиллирую на ХЕ7+update1, под windows7.
  4. С этим файликом не компилится, хотя в у него в uses всё вроде прописано. В каком модуле объявлены переменные и функции, непонятно.
  5. В файле fmx.context.gles.pas есть класс TCustomContextOpenGL, а в нём процедура TCustomContextOpenGL.DoInitializeTexture(const Texture: TTexture); Вот в этой процедуре хотелось бы изменить вызовы glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); на glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); для того, чтобы текстура не натягивалась (clamp), а размножалась (tile).
  6. Примеры не запускал. Попробовал сваять сложную конструкцию из 50 3DLayer и 17 думми, прицепил анимацию. На дешёвом планшете "explay" вертится всё быстро, тормозов не заметил.
  7. Вот, предлагают такое решение (цитата): "Had to dig into the FM code to introduce a "TextureRepeat" property to TLightMaterialSource and update its DoTextureChanged method, then have this texture repeat flag in TBitmapCtx.GetTexture transferred to the TTexture, and finally make a conditional in TContextOpenGL.DoInitializeTexture (fmx.context.gles.pas) for clamping or repeating... - See more at: http://codeverge.com/embarcadero.delphi.firemonkey/3d-texture-repeat-on-ipad/1052997#sthash.SyxVtcui.dpuf" Интересно, он имеет в виду исправление оригинального библиотечного кода или создание класса-наследника от TCustomContextOpenGL? И ещё: откуда процедура DoInitializeTexture вызывает OpenGL-левские методы glTexParameteri? Tile для текстур - это важно, кто занимался 3D в FM, наверняка не мог пройти мимо. Отзовитесь!
  8. Да, теперь проблема отображения текстур на андроиде решена. (Однако, сразу замаячила следующая: похоже, свойство Tile для TLightMaterialSource отсутствует...надо смотреть исходники)
  9. В XE6 как раз всё работает. Сегодня только наткнулся на описание этого бага. http://qc.embarcadero.com/wc/qcmain.aspx?d=127396
  10. тим адвайтов

    LightMaterialSource.texture

    Берём любой 3D Shape, например, TRectangle3d. Используем битмап в свойстве LightMaterialSource.texture. Под виндой всё работает, однако в андроиде текстура не появляется. Приходится вместо использования TRectangle3d собирать куб из TLayer3d (на которых текстуру андроид видит). Но тогда фонарь (TLight) бесполезен. Кто-нибудь сталкивался с такой проблемкой?
×
×
  • Создать...