forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Xors3D + BlitzMax (http://forum.boolean.name/showthread.php?t=14261)

Amatsu 18.02.2011 13:03

Xors3D + BlitzMax
 
Нуб, знаю. Подскажите пожалуйста, как подключить ксорс к BMax? Решил попробовать производительность ксорса на нем (по идее должно шустрее работать чем в блитце, нэ?), обновил макс до 1.41 (правда гуи у меня 1.34, ссылки по скачке более новых версии на булке уже мертвые), закинул папку xorsteam.mod в папку BlitzMax\mod, закинул все три dll ксорса в папку с ксорсовскими сэмплами для BMax, загружаю любой пример, компилю - пишет Can't find interface for module 'xorsteam.mod'.
Что я делаю не так? :D

Knightmare 18.02.2011 13:07

Ответ: Xors3D + BlitzMax
 
Пересобрать модуль, для начала.

.Squid 18.02.2011 13:08

Ответ: Xors3D + BlitzMax
 
Модуль нужно собрать.
У меня build_xors3d_mod.bat лежит в корне папки БлитцМакса
Код:

bin\bmk.exe makemods xorsteam.xors3d
bin\docmods.exe xorsteam.xors3d

PS. На простых примерах разницы между Б3Д, БМ, С++ и т.д. не будет. Она будет заметна при более-менее сложной логике, в которой будет много работы со строками, математикой и т.п.

Amatsu 18.02.2011 13:09

Ответ: Xors3D + BlitzMax
 
Ок, спасибо :) Пошел гуглить в этом направлении

Amatsu 18.02.2011 13:13

Ответ: Xors3D + BlitzMax
 
Кстати, чтобы не плодить тем - с анимацией b3d я кажется тоже разобрался, косяк действительно был в экспорт-плагине милки :) Экспортнул через Ultimate Unwrap3D - усе плавно движется (тьфу тьфу тьфу)

Knightmare 18.02.2011 13:16

Ответ: Xors3D + BlitzMax
 
Цитата:

Сообщение от Amatsu (Сообщение 179378)
Кстати, чтобы не плодить тем - с анимацией b3d я кажется тоже разобрался, косяк действительно был в экспорт-плагине милки :) Экспортнул через Ultimate Unwrap3D - усе плавно движется (тьфу тьфу тьфу)

Самое смишное - плагин для милка написан Марком:-)

Amatsu 18.02.2011 13:20

Ответ: Xors3D + BlitzMax
 
Цитата:

Сообщение от Knightmare (Сообщение 179379)
Самое смишное - плагин для милка написан Марком:-)

Ну сам Blitz3d без проблем открывает и воспроизводит анимацию моделей, экспортированных этим плагином :) А вот ксорс похоже дружит лишь с более продвинутыми версиями типа пайплайна или этого UU3D.

з.ы. по поводу перекомпиляции модулей - нашел статью http://blitzetc.blitzmax.ru/index.ph...править_модули - оно?

Knightmare 18.02.2011 13:21

Ответ: Xors3D + BlitzMax
 
Цитата:

Сообщение от Amatsu (Сообщение 179380)
Ну сам Blitz3d без проблем открывает и воспроизводит анимацию моделей, экспортированных этим плагином :) А вот ксорс похоже дружит лишь с более продвинутыми версиями типа пайплайна или этого UU3D.

В самом блитзе овер9000 костылей, не укладывающихся в спецификацию формата, чтобы поддерживать косяки экспортеров разных:-)

Amatsu 18.02.2011 17:18

Ответ: Xors3D + BlitzMax
 
Так, сейчас буду разбираться в бмаксе. Один лишь вопрос - стоит ли оно того? Будет ли прирост производительности относительно православного Blitz3D при запуске библиотек под BMax?

Knightmare 18.02.2011 17:25

Ответ: Xors3D + BlitzMax
 
Будет. Ну и можно писать более человеческий код.

falcon 18.02.2011 22:21

Ответ: Xors3D + BlitzMax
 
Дык а почему бы не писать на плюсах тогда сразу?..
имхо профита больше... подтянуться в действительно годном языке, поднять свой скил как программиста..
той же гибкости, производительности будет ещё больше... про чистоту кода конечно более спорный вопрос.. но если сравнивать с БМ то имхо ещё и чище..

Amatsu 18.02.2011 22:45

Ответ: Xors3D + BlitzMax
 
Цитата:

Сообщение от falcon (Сообщение 179420)
Дык а почему бы не писать на плюсах тогда сразу?..
имхо профита больше... подтянуться в действительно годном языке, поднять свой скил как программиста..
той же гибкости, производительности будет ещё больше... про чистоту кода конечно более спорный вопрос.. но если сравнивать с БМ то имхо ещё и чище..

Потому что я делаю весь проект целиком, от кода до графики. И лишь в свободное от работы и личной жизни время :( Потому у меня пока что нет желания нагружать себя дополнительной работой по освоению плюсов.

Amatsu 20.02.2011 13:38

Ответ: Xors3D + BlitzMax
 
Пробовал заюзать xLinePick - почему-то не хочет работать. Ради эксперимента изменил немного пример Pick.bmx. Пробовал менять строчку
Код:

If xMouseHit(1) Then xCameraPick(camera, xMouseX(), xMouseY())
на
Код:

If xMouseHit(1) Then xLinePick xEntityX(camera, 1), xEntityY(camera, 1), xEntityZ(camera, 1), xEntityX(cube, 1), xEntityY(cube, 1), xEntityZ(cube, 1), 1
и
Код:

xTFormVector 0, 0, 100, camera, 0
if xMouseHit(1) Then xLinePick xEntityX(camera, 1), xEntityY(camera, 1), xEntityZ(camera, 1), xEntityX(camera, 1) + xTFormedX(), xEntityY(camera, 1) + xTFormedY(), xEntityZ(camera, 1) + xTFormedZ(), 1

Никакой реакции от механизма пика

Knightmare 20.02.2011 13:38

Ответ: Xors3D + BlitzMax
 
Последнее значение поставь либо 0 либо большое число.

Amatsu 20.02.2011 13:56

Ответ: Xors3D + BlitzMax
 
Спасибо. А то я по старой памяти как в блитце 1 ставил...

Amatsu 20.02.2011 17:56

Ответ: Xors3D + BlitzMax
 
Кстати, заметил особенность - xLinePick юзает не отрезок, а луч, хотя в параметрах и предлагается указать координаты двух концов.

Knightmare 20.02.2011 17:58

Ответ: Xors3D + BlitzMax
 
Вообще-то отрезок и юзается. Точнее из него делается луч, а последний параметр задает его длину, если поставить 0 - высчитается автоматом.

Amatsu 20.02.2011 18:04

Ответ: Xors3D + BlitzMax
 
Цитата:

Сообщение от Knightmare (Сообщение 179758)
Вообще-то отрезок и юзается. Точнее из него делается луч, а последний параметр задает его длину, если поставить 0 - высчитается автоматом.

Тю мля :crazy: Я думал последний параметр - радиус линии в поперечнике, как у аналогичной команды в блитце. Теперь ясно, пойду править косяки

Knightmare 20.02.2011 18:05

Ответ: Xors3D + BlitzMax
 
В блитзе это тоже длина. Но в диапазоне [0; 1].

Amatsu 20.02.2011 18:08

Ответ: Xors3D + BlitzMax
 
Да? 0_о Хм... А вроде работало как радиус :crazy: Вот что значит на блитцмакс с ксорсом перешел :-D

Amatsu 24.02.2011 22:23

Ответ: Xors3D + BlitzMax
 
Что-то у меня закрадываются смутные сомнения, что xEntityPick страшно не дружит с тримешами...

Knightmare 24.02.2011 22:32

Ответ: Xors3D + BlitzMax
 
Чем он у тебя не дружит?

Amatsu 24.02.2011 22:37

Ответ: Xors3D + BlitzMax
 
Чуть позже наверное пример выложу. Если не решу проблему. Извиняюсь за беспокойство

Amatsu 24.02.2011 23:22

Ответ: Xors3D + BlitzMax
 
Код:

' Импорт модуля
Import xorsteam.xors3d

SuperStrict




' Загрузка конфигурации
Global GWidth:Int = 640
Global GHeight:Int = 480
Global GDepth:Int = 32
Global GMode:Int = 1
Global ShadowMode:Int = 0
Global EffectMode:Int = 0
Global GlowMode:Int = 0
Global ContrastMode:Int = 0
Global VSyncMode:Int = 0

Local fileout:TStream = ReadFile("game.cfg")
If fileout Then
  GWidth = ReadInt(fileout)
  GHeight = ReadInt(fileout)
  GDepth = ReadInt(fileout)
  ShadowMode = ReadInt(fileout)
  EffectMode = ReadInt(fileout)
  GlowMode = ReadInt(fileout)
  ContrastMode = ReadInt(fileout)
  VSyncMode = ReadInt(fileout)
EndIf





' Инициализация 3D-режима
xAppTitle "Exilium"
xGraphics3D GWidth, GHeight, GDepth, 1, VSyncMode
SeedRnd MilliSecs()
xHidePointer()

' Антиалайзинг
xSetAntiAliasType(8)
xAntiAlias False

' Фильтрация
xSetTextureFiltering(TF_ANISOTROPICX8)

' Загрузка шрифта
Global arial:Int = xLoadFont("Arial", 12)

' Переменная отладки
Global debug_info:Byte




' Создание камеры
Global camera:Int = xCreateCamera()
xCameraRange camera, 0.1, 3000
xCameraEnableShadows(camera)

' Создание света и тени
xInitShadows(1024, 1024, 1024)
xSetShadowParams 5, 0.95, True, 300
xSetShadowsBlur(5)

Global light_up:Int = xCreateLight()
xRotateEntity light_up, 70, 45, 0
xLightEnableShadows light_up, 1
xLightShadowEpsilons light_up, 0.0001, 0.016









' Загрузка уровня
Global world_scale:Float = 0.35

'Global level:Int = xLoadMesh("data\maps\battle\1\level3.b3d")
'Local level_tex:Int = xLoadTexture("data\maps\battle\1\1.jpg")
'xEntityTexture level, level_tex
''xScaleMesh level, 1.3 * world_scale, 1.3 * world_scale, 1.3 * world_scale
''xPositionEntity level, 0, 640 * world_scale, 50 * world_scale
'xScaleMesh level, 13 * world_scale, 13 * world_scale, 13 * world_scale
'xPositionEntity level, 0, -250, 10
'xUpdateNormals level
'
'xEntityAddHullShape level, 0
'xEntityAlpha level, 0.3
'xEntityPickMode level, 2

Local c1:Int = xCreateCube()
xScaleMesh c1, 300, 5, 300
xPositionEntity c1, 0, -25, 0
'xEntityAddBoxShape c1, 0
'xEntityPickMode c1, 3
xEntityAddHullShape c1, 0
xEntityPickMode c1, 2

'testtt = xLoadAnimMesh("D:\Developing\realise_models2\HERO_EX1\test.b3d")
''testtt=xLoadAnimMesh("D:\Developing\realise_models2\HERO1\test6.b3d")
'xUpdateNormals testtt
'xAnimate(testtt,ANIMATION_LOOP,1.5)
'xScaleEntity testtt, 2, 2, 2
''xScaleEntity testtt, 15, 15, 15
'xEntityFX testtt,FX_FULLBRIGHT



' Загрузка персонажа
TBattleCharacter.CreateBattleCharacter("player", 1, 1, 999)
Global cube:Int = xCreateCube()


' Инициация mouse look
Global mxs:Float, mys:Float, dest_xang:Float, dest_yang:Float, xang:Float, yang:Float
Global camera_target:Int = xCreatePivot()
Global dist_target:Int = xCreatePivot(camera_target)

Global move_target:Int = xCreateCube()






' Главный цикл
While Not xKeyDown(1)

  If VSyncMode Then Delay(16)

  If xMouseHit(1) Then ShootSphere(camera)

  If xKeyHit(88) Then debug_info = Not debug_info

  ' Обработка персонажей
  UpdateCharacters()

  ' Обработка мира
  xUpdateWorld

  xRenderWorld(1.0, 1)

  ' Вывод отладочной информации
  xPhysicsDebugRender debug_info
  If debug_info Then
    xText 10, 10, "FPS: " + xGetFPS()
  EndIf

  ' drawing the scene
  xFlip
Wend






'==============================================================
'
' Пользовательские типы
'
'==============================================================

' Тип персонажа
Type TBattleCharacter
  Global list:TList = CreateList()
  Global list_count:Int

  Field model:Int, anim_mesh:Int
  Field selected:Byte
  Field name:String
  Field level:Int, life:Int, life_max:Int

 
  ' Создание персонажа
  Function CreateBattleCharacter:TBattleCharacter(variant:String, selected:Byte, level:Int, life:Int)
    Select variant
            Case "player"
        Local bchar:TBattleCharacter = New TBattleCharacter

        ' Определение переменных
        bchar.selected = selected
        bchar.level = level
        If bchar.level > 99
          bchar.level = 99
        ElseIf bchar.level < 1
          bchar.level = 1
        EndIf

        ' Определение постоянных
        bchar.name = variant

        ' Определение параметров
        bchar.life_max = 60 + bchar.level * 27
        bchar.life = life
        If bchar.life > bchar.life_max
          bchar.life = bchar.life_max
        ElseIf bchar.life < 1
          bchar.life = 1
        EndIf

        ' Загрузка моделей
        bchar.model = xCreateCube()
        xScaleMesh bchar.model, 14 * world_scale, 40 * world_scale, 14 * world_scale
'        xEntityAddBoxShape bchar.model, 10

        TBattleCharacter.list.AddLast(bchar)
        TBattleCharacter.list_count:+1
    End Select
  End Function

  ' Обработка персонажа
  Method Update()
    If selected = 1 Then
      MouseLook(model)
      If xMouseHit(2) Then
        xCameraPick(camera, xMouseX(), xMouseY())
        xPositionEntity move_target, xPickedX(), xPickedY(), xPickedZ()
      EndIf
'      If xEntityDistance(move_target, model) > 10 Then
'        xTranslateEntity model, (xEntityX(move_target, 1) - xEntityX(model, 1)) / 10, (xEntityY(move_target, 1) - xEntityY(model, 1)) / 10, (xEntityZ(move_target, 1) - xEntityZ(model, 1)) / 10
'      EndIf
    EndIf
  End Method

End Type
End






'==============================================================
'
' Пользовательские функции
'
'==============================================================

' Обработка всех персонажей
Function UpdateCharacters()
  For Local bchar:TBattleCharacter = EachIn TBattleCharacter.list
    bchar.Update()
  Next
End Function




' Mouse look
Function MouseLook(target:Int, height:Float = 10, distance:Float = 100, rotate:Float = 50)
  Local collision_distance:Float = 5

  If target <> 0 Then
    If xKeyDown(17) Then xTranslateEntity target, 0, 0, 1
    If xKeyDown(31) Then xTranslateEntity target, 0, 0, -1
    If xKeyDown(30) Then xTranslateEntity target, -1, 0, 0
    If xKeyDown(32) Then xTranslateEntity target, 1, 0, 0

    mxs = xMouseX() - xGraphicsWidth() / 2
    mys = xMouseY() - xGraphicsHeight() / 2
    xMoveMouse xGraphicsWidth() / 2, xGraphicsHeight() / 2
    mxs = mxs / (rotate / 12)
    mys = mys / (rotate / 12)
    If mxs>rotate Then mxs=rotate
    If mxs < - rotate Then mxs = -rotate
    If mys > rotate Then mys = rotate
    If mys < - rotate Then mys = -rotate

    dest_yang = dest_yang + mys
    If dest_yang < - 85 Then dest_yang = -85
    If dest_yang > 85 Then dest_yang = 85
    yang = (yang + ((dest_yang - yang) - (dest_yang - yang) / 1.5) / 1.5)

    dest_xang = dest_xang - mxs
    If dest_xang > 179.9999 Then
      dest_xang = dest_xang - 359.9999
      xang = xang - 359.9999
    EndIf
    If dest_xang < - 179.9999 Then
      dest_xang = 359.9999 + dest_xang
      xang = 359.9999 + xang
    EndIf
    xang = (xang + ((dest_xang - xang) - (dest_xang - xang) / 1.5) / 1.5)


    xPositionEntity camera_target, xEntityX(target, 1), xEntityY(target, 1), xEntityZ(target, 1)
    xRotateEntity camera_target, 0, xang, 0
    xPositionEntity dist_target, 0, Sin(yang) * distance, -Cos(yang) * distance

    Local vis_line_x:Float = xEntityX(camera_target, 1)
    Local vis_line_y:Float = xEntityY(camera_target, 1)
    Local vis_line_z:Float = xEntityZ(camera_target, 1)
    Local vis_line_dx:Float = xEntityX(dist_target, 1)
    Local vis_line_dy:Float = xEntityY(dist_target, 1)
    Local vis_line_dz:Float = xEntityZ(dist_target, 1)

    If xLinePick(vis_line_x, vis_line_y, vis_line_z, vis_line_dx, vis_line_dy, vis_line_dz, distance) <> 0 Then
'      xPositionEntity camera, xPickedX() - (xPickedX() - vis_line_x) / collision_distance, xPickedY() - (xPickedY() - vis_line_y) / collision_distance, xPickedZ() - (xPickedZ() - vis_line_z) / collision_distance
      xPositionEntity camera, xPickedX(), xPickedY(), xPickedZ()
    Else
'      xPositionEntity camera, vis_line_x + (vis_line_dx - vis_line_x) / (collision_distance * (0.25 + yang / 1000)), vis_line_y + (vis_line_dy - vis_line_y) / (collision_distance * (0.25 + yang / 1000)), vis_line_z + (vis_line_dz - vis_line_z) / (collision_distance * (0.25 + yang / 1000))
'      xPositionEntity camera, vis_line_x + (vis_line_dx - vis_line_x) / (collision_distance * 0.24), vis_line_y + (vis_line_dy - vis_line_y) / (collision_distance * 0.24), vis_line_z + (vis_line_dz - vis_line_z) / (collision_distance * 0.24)
      xPositionEntity camera, vis_line_dx, vis_line_dy, vis_line_dz
    EndIf
    xPointEntity camera, camera_target
  EndIf
End Function




' function to shoot sphere
Function ShootSphere(camera%)
        Local sphere:Int = xCreateSphere()
        xPositionEntity(sphere, xEntityX(camera, True), xEntityY(camera, True) - 5, xEntityZ(camera, True))
        xEntityColor(sphere, 255, 0, 0)
        xEntityAddSphereShape(sphere, 1.0, 1.0)
        xTFormNormal 0.0, 0.0, 1.0, camera, 0
        xEntityApplyCentralImpulse(sphere, xTFormedX() * 50, xTFormedY() * 50, xTFormedZ() * 50)
End Function

Вот пример. Я уже не из б3д меш гружу а просто создаю куб, юзаю на нем тримеш в том числе и для пика. В центре карты камера нормально упирается в "землю" не проваливаясь. При приближении к краям пик перестает работать, камера "проваливается" в куб
И да, такой же абсолютно код маус лока (за исключением измененной команды лайнпика в ксорсе) прекрасно работал в блитце, в той же моей демке avallon

Knightmare 24.02.2011 23:26

Ответ: Xors3D + BlitzMax
 
Какую-то адовую фигню творишь. Потом прогоню код.

Amatsu 24.02.2011 23:27

Ответ: Xors3D + BlitzMax
 
Цитата:

Сообщение от Knightmare (Сообщение 180472)
Какую-то адовую фигню творишь. Потом прогоню код.

Я пока к бмаксу привыкаю, потому куча закомменченного

Knightmare 24.02.2011 23:34

Ответ: Xors3D + BlitzMax
 
Я чего-то нифига не понял в твоем примере. Что хоть должно быть? И что не так?

Amatsu 24.02.2011 23:37

Ответ: Xors3D + BlitzMax
 
WASD - передвижение. Камера вращается вокруг параллелепипеда, если повернуть ее вниз - она "упирается" в "пол". Но если двигать параллелепипед к краю - камера начнет проваливаться в "пол", будто коллижен-боди у "пола", по которому рассчитывается лайнпик, закончилось раньше, чем мы подошли к краю меша.
И это он на боксе так начинает проваливаться. Если загрузить простенький уровень - при подходе к удаленным от центра координат стенам начинается пляска камеры, будто лайнпик превращается из луча в прямую и пикает в обе стороны.
Если убрать пик - камера нормально вращается на любом отдалении параллелепипеда от центра координат. Так что если косяк у меня - то не во вращении камеры... наверное...
Да, еще, если отдалятся от центра, упершись камерой в "пол" - точка пика будто смещается, хотя если оторвать камеры от пола - камера нормально центрирована на параллелепипеде

Knightmare 25.02.2011 16:00

Ответ: Xors3D + BlitzMax
 
Решение твоей проблемы:
Код:

If xLinePick(vis_line_x, vis_line_y, vis_line_z, vis_line_dx - vis_line_x, vis_line_dy - vis_line_y, vis_line_dz - vis_line_z, distance) <> 0 Then

Amatsu 25.02.2011 16:13

Ответ: Xors3D + BlitzMax
 
:''(( У меня изначально код был:
Код:

    Local vis_line_x:Float = xEntityX(camera_target, 1)
    Local vis_line_y:Float = xEntityY(camera_target, 1)
    Local vis_line_z:Float = xEntityZ(camera_target, 1)
    Local vis_line_dx:Float = xEntityX(dist_target, 1)-vis_line_x
    Local vis_line_dy:Float = xEntityY(dist_target, 1)-vis_line_y
    Local vis_line_dz:Float = xEntityZ(dist_target, 1)-vis_line_z

Но прочитал в хелпе что dx- х координата, потому подумал что надо в глобальных координатах указывать, в отличие от блитца... И убрал...
В общем очень извиняюсь за тупость, огромное спасибо за выявление моего косяка

Knightmare 25.02.2011 16:15

Ответ: Xors3D + BlitzMax
 
В блитзе тоже направление там, а не конечная точка. У нас же изначально было точка-точка, но т.к. юзеры начали высирать кирпичи из-за неработающего кода сделали как в блитзе, да.

Amatsu 11.03.2011 16:41

Ответ: Xors3D + BlitzMax
 
Чтобы не плодить новых тем. Появилась на днях необходимость написать движок на подобии Total Influence Online, то есть классическая 2д-изометрия с отрендеренными тайлами, в которой используются 3д-модели динамических объектов (персонажи, ящики и т.д.). Если писать на блитцмаксе+ксорсе, возникает несколько вопросов:
1) реально ли использовать рендер отдельных моделей (xRenderEntity) для вставки их в 2д-изометрический движок в качестве таких же спрайтов?
2) я тестил 2д самого блитцмакса - оно достаточно шустрое и не требовательное к железу. Но я пока не тестил 2д ксорса - насколько оно шустрое относительно стандартного блитцмаксовского рендера?
3) есть ли возможность сочетать команды рендера ксорса со стандартыми 2д-командами самого блитцмакса? (на случай если 2д силами ксорса уступает по производительности блитцмаксу)
Заранее спасибо

.Squid 11.03.2011 17:30

Ответ: Xors3D + BlitzMax
 
1) Да.
2) Ну, я бы не сказал, что родное 2д Ксорса шустрое. Но есть FastImage для Ксорса - он быстрый. В планах переписать родное 2д с расширением функциональности и увеличением производительности.
3) Нет.

Amatsu 11.03.2011 17:59

Ответ: Xors3D + BlitzMax
 
Ок, значит буду юзать фастлибу :) Спасибо

Amatsu 11.03.2011 21:14

Ответ: Xors3D + BlitzMax
 
Можно еще вас вопросами помучать? :)
Как подключить фастлиб к блитцмаксу?
Я скачал оригинальный ксорс, скачал последний билд к нему, внутри в папке headers\BlitzMax не обнаружил никакого модуля для фастлиб. Подумал что он не нужен. Зашел в папку FastImage\port\bmax скопировал оттуда все 3 файла в папку со своим проектом и подключил файл fastimage.bmx командой Include
Во первых, при компиляции начало ругаться что у меня в файле fastimage.bmx стоит Strict, а в коде самой программы используется SuperStrict. Впрочем я этот вопрос пока решил убрав первую строчку.
Во вторых у меня теперь ругается на строчку Module xorsteam.fastimage
Знаю что туплю, но просто спросить больше негде. Кто знает решение проблемы - научите, как правильно подключить?

Вот чего выдает при компиляции:
Compile Error: Module does not match commandline module

.Squid 11.03.2011 22:20

Ответ: Xors3D + BlitzMax
 
А ты модуль собрал?

Amatsu 11.03.2011 22:57

Ответ: Xors3D + BlitzMax
 
Ага, то есть я эти три блитцмаксовских файла закидываю в папку с названием fastimage.mod и компилю как обычный модуль? Щас попробую!

Amatsu 12.03.2011 00:14

Ответ: Xors3D + BlitzMax
 
Создал папку BlitzMax\mod\xorsteam.mod\fastimage.mod поместил в нее три файла fastimage.bmx, FITypesAndFunctions.bmx и GetImageInfo.bmx, попробовал скомпилировать как другие модули BlitzMax\bin\bmk.exe makemods -a fastimage - тишина
Подкиньте идею плиз

.Squid 12.03.2011 00:38

Ответ: Xors3D + BlitzMax
 
BlitzMax\bin\bmk.exe makemods -a xorsteam.fastimage

Amatsu 12.03.2011 00:50

Ответ: Xors3D + BlitzMax
 
Спасибо, понял в чем косяк :) Сдвинулось с мертвой точки, но:

D:\Developing\BlitzMax\bin> bmk.exe makemods -a xorsteam.fastimage
Compiling:fastimage.bmx
Compile Error: Unable to convert from 'Int' to 'Int Ptr'
[D:/Developing/BlitzMax/mod/xorsteam.mod/fastimage.mod/FITypesAndFunctions.bmx;3
23;3]
Build Error: failed to compile D:/Developing/BlitzMax/mod/xorsteam.mod/fastimage
.mod/fastimage.bmx
D:\Developing\BlitzMax\bin>

Щас попробую покопаться в коде

.Squid 12.03.2011 00:53

Ответ: Xors3D + BlitzMax
 
Ксорс обнови.

Amatsu 12.03.2011 01:04

Ответ: Xors3D + BlitzMax
 
Во, кажись заработало :) Спасибо большое!

Amatsu 15.03.2011 00:49

Ответ: Xors3D + BlitzMax
 
Пишу 2д-тайловый движок, решил загрузить в него png с альфой. И не смог добиться включения альфа-канала на загруженных изображениях (юзаю самую последнюю ревизию ксорса и фастимэджа к нему).
Накатал простенький код, в нем две картинки, одна на другую накладывается без альфы:
Код:

Import xorsteam.xors3d
Import xorsteam.fastimage

xGraphics3D 800, 600, 0, 0
xInitDraw

camera = xCreateCamera()

imgFast1 = xLoadImageEx ("devil.png", 1 + 2, FI_AUTOFLAGS)

While Not xKeyHit (1)

  xCls

  xRenderWorld

  xStartDraw
  xSetColor 255, 255, 255
  xSetAlpha 1.0
  xDrawImageEx imgFast1, 1, 1

  xDrawImageEx imgFast1, xMouseX(), xMouseY()
  xEndDraw

  xFlip
Wend

Хотя идентичный код для блитца3д+фастимэдж дает желаемый эффект альфы:
Код:

Include "FastImage.bb"

Graphics3D 800, 600, 0, 0
InitDraw

camera = CreateCamera()

imgFast1 = LoadImageEx ("devil.png", 1 + 2, FI_AUTOFLAGS)

While Not KeyHit (1)

  Cls

  RenderWorld

  StartDraw
  SetColor 255, 255, 255
  SetAlpha 1.0
  DrawImageEx imgFast1, 1, 1

  DrawImageEx imgFast1, MouseX(), MouseY()
  EndDraw

  Flip
Wend


wolfhound512 15.03.2011 01:52

Ответ: Xors3D + BlitzMax
 
xSetBlend FI_ALPHABLEND ?

Amatsu 15.03.2011 02:08

Ответ: Xors3D + BlitzMax
 
Цитата:

Сообщение от wolfhound512 (Сообщение 182819)
xSetBlend FI_ALPHABLEND ?

Пробовал все варианты бленда - не помогло.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot