forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   Библиотека Image3d (http://forum.boolean.name/showthread.php?t=632)

pax 02.02.2006 22:57

Разбирал примеры програм из журнала Blitz Et Cetera и наткнулся на вот это:
Цитата:

;B2DtoB3D (замещение некоторых 2D функций в 3D-режиме) - John Pickford
;************************************************* ******************
;
; 2Din3D By J.Pickford - Freeware!
;..........................................
;
; A set of 2D sprite functions implemented in B3D
;
; Functions are intended to be VERY close to B2D commands to make
; conversion of B2D games easy
;
;
;
; This code is a work-in-progress. I hope to emulate more of the B2D
; functionality in future versions.
;
; Future Enhancements: Sprite Scaling, Rotation, Variable Alpha
;
;************************************************* *******************

попробовал... понравилась идея но не реализация...

Короче вот написал библу Image3D для работы с 2D графикой средствами 3D

Пользуйтесь ;)

PS: лень было писать функции для работы с тайловой картой... это уж как-нибудь сами (если оно вам надо)

pax 02.02.2006 23:40

Вот:
Цитата:

; Библиотека для отображения 2д графики средствами Blitz3D

; Что есть в библиотеке:
; 1. Библиотека адаптирована почти под любое разрешение
; (если изображение отображается неточно при вашем разрешении то
; подбеоите значения переменных I3DPSX# и I3DPSY# в функции InitI3D()
; для вашего разрешения)
; 2. Поддержка анимарованных изображений
; 3. Поддержка вращения изображения
; 4. Поддержка прозрачности
; 5. Режим маски работает только с черным цветом ( смотрите описание функции CreateTexture() )
; 6. Определение столкновения изображений используя стандартную функцию RectsOverlap()
;
; Чего в библиотеке нехватает:
; 1. Определения столкновений между изображениями с учетом угла поворота

:@

pax 03.02.2006 12:06

Вложений: 2
Вот обнавление библиотеки... кое что подправлено и кое что добавлено ;)
Цитата:

; Image3D V 1.1
; Что есть в библиотеке:
; 1. Библиотека адаптирована почти под любое разрешение
; (если изображение отображается неточно при вашем разрешении то
; подбеоите значения переменных I3DPSX# и I3DPSY# в функции InitI3D()
; для вашего разрешения)
; 2. Поддержка анимарованных изображений
; 3. Поддержка вращения изображения
; 4. Поддержка прозрачности
; 5. Режим маски работает только с черным цветом ( смотрите описание функции CreateTexture() )
; 6. Определение столкновения изображений используя стандартную функцию RectsOverlap()
; 7. Создание пустых изображений (белого цвета) с последующим наложением текстуры
; 8. Копирование изображений
;
; Чего в библиотеке нехватает:
; 1. Определения столкновений между изображениями с учетом угла поворота


impersonalis 03.02.2006 13:06

Не понял - какой аттач какачть?

pax 03.02.2006 14:35

Второй аттач :)
Там обновленная библа с обновленным примером... хотя картинки теже...

pax 03.02.2006 16:55

Короче этой библиотекой можно компенсировать работу с двумерной графикой, которая реализована в BlitzMAX, но я ее делал для реализации отображения статистики песонажа при незначительном снижении производительности (вместо изображения полигон с текстурой), причем координатная система остается тойже без заметных искажений... можете сравнить нарисовав рядом или поверх изображения Rect или туже картинку только стандартными средствами... к тому же, в отличии от стандартных средств, изменение размера кртинки происходит моментально за счет изменения положения вертексов, а не изменения размера текстуры... вот вобщем то и все :)

pax 04.02.2006 15:40

Так комунить нужна эта библа? Или мне прекратить над ней работу?

Судя по тому что скачало библу не более 5 человек... а по настоящему еще меньше то наверное она никого не интересует... :unsure:

impersonalis 10.02.2006 00:17

Библиотека просто супер! Меня порадовала. Но тут, явно на беду, я решил её посмотреть ( непосредственно программны код, а не её работу) - и О УЖАС! Я был в шоке, мой разум начал погружаться во тьму.
Из функции InitI3D() хитро прищуриваясь и плотоядно улыбаясь, на меня смотрела команда GOTO. Страх объял меня и началась пляска нервов.
О БЕЗУМИЕ!
Поучему бы не переписать эту фонкцию вот так:
Код:

Function InitI3D()
 GWidth%=GraphicsWidth()
 GWidth2%=GWidth%/2
 GHeight%=GraphicsHeight()
 GHeight2%=GHeight%/2
        ;Значения по умолчанию
 I3DPSX#=0.15
 I3DPSY#=0.15
;640x480
        If (GWidth%=640) * (GHeight%=480) Then
 I3DPSX#=0.15
 I3DPSY#=0.15

;800x600
        ElseIf (GWidth%=800) * (GHeight%=600) Then
 I3DPSX#=0.15
 I3DPSY#=0.15

;1024x768
        ElseIf (GWidth%=1024) * (GHeight%=768) Then
 I3DPSX#=0.1487
 I3DPSY#=0.1487

;1028x960
        ElseIf (GWidth%=1280) * (GHeight%=960) Then
 I3DPSX#=0.15
 I3DPSY#=0.15

;1280x1024
        ElseIf (GWidth%=1280) * (GHeight%=1024) Then
 I3DPSX#=0.15
 I3DPSY#=0.15
        EndIf
 X0#=-GWidth2%*I3DPSX#
 Y0#=GHeight2%*I3DPSY#
End Function


А так, очень даже симпотичная библочка.

alex-mad 10.02.2006 00:24

Цитата:

Originally posted by impersonalis@9.2.2006, 23:17
О БЕЗУМИЕ!

и правда... это действие не обусловленно использовано!

impersonalis 10.02.2006 01:30

Я могу ошибаться - но вроде как, InitI3D() можно заменить на вычисления по формуле ( юзая координаты проекции точки на экран) - как это сделано тут:
http://blitzetc.boolean.name/mblur.htm

pax 10.02.2006 22:39

Думаю использование оператора GOTO дело автора ;) к тому же отрезок кода, в котором он использован очень маленький... так что ошибок из-за него не может возникнуть...
и еще... если существует этот оператор, то почему бы его не использовать ;)

Библу кстати доделать надо... если время будет, то доделаю...
По моему в ней надо сделать автоматическое применение параметра Order... и еще думаю реализовать работу с Image3d как с обычными изображениями... т.е. рисование одной картинки много раз...

jimon 10.02.2006 23:07

2 imper : хватит на ежать на гото
ето обсудилось - блицу до заднего места есть ли там гото или нету
а вот в с++ может вызвать траблы с деконструкторами переменых и классов

alex-mad 10.02.2006 23:22

Цитата:

Originally posted by jimon@10.2.2006, 22:07
2 imper : хватит на ежать на гото
ето обсудилось - блицу до заднего места есть ли там гото или нету
а вот в с++ может вызвать траблы с деконструкторами переменых и классов

мне нравится использование гото в языках и случаях где это не приведёт к ошибкам... но надо менятся... и следить за стилем проганья! :)

impersonalis 11.02.2006 00:04

2jimon - сам ты деконструктор, деструктор!

impersonalis 11.02.2006 11:55

2pax: использование бибилотеки - дело юзера ;)
не использовать этот опреатор стоит, уже хотя бы из тех соображений, что помимо него сущестует онструкция elseif, благодарая которой твой код стал, как минмиум, меньше на несколько строк.


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

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