Журнал о программированнии на языках Blitz3D, BlitzPlus, BlitzMax

Заметки от Джимона

Материал из Blitz Et Cetera

Перейти к: навигация, поиск

Загрузка текстур

Я заметил глюк в блице: версия 1.87 не хочет грузить текстуры с размером не кратным 2 на видеокартах geforce 6 series В общем, я написал функцию обхода этого:

video_card_type$="Geforce 6 series"


Function load_texture(file$,flags=1,frames=1)
;by jimon
Select video_card_type$
Case "Geforce 6 series"
        img=LoadImage(file$)
        tex=CreateTexture(ImageWidth(img),ImageHeight(img),flags,frames)
        CopyRect 0,0,ImageWidth(img),ImageHeight(img),0,0,ImageBuffer(img),TextureBuffer(tex)
        FreeImage img
        Return tex
Default
        Return LoadTexture(file$,flags)
End Select

End Function

Потом установил 1.90 но там уже текстуры блиц грузит!!! Решил протестировать на скорость. 1.87 моя функция загрузила текстуру 873*519 за 55 мс , блиц не загрузил но что-то думал 33 мс. 1.90 моя функция также загрузила за 55 мс , а блиц думал целых 907 мс (!!!), но что-то загрузил.

В общем, желательно во всех програмах использовать ету функцию :), чтобы ваши игры нормально шли на новых видеокартах.

ps. у меня XFX 6600 GT и все идет с этим кодом

Как обойти ошибку деления на ноль ?

a=b/c#

Обязательно задать c тип float и ошибки не будет. Это происходит из-за неточностей в обработке сверхмалых чисел то, есть когда c#=0, то получается примерно так a=b/0.00000001

Вот так вот.

Ошибка в библиотеке ODE

Найдена критическая ошибка в функции преобразовании углов поворота в матрицу поворота в arkon ode 0.5 wrapper. Пример ошибки :

space = ODE_dWorldCreate(1)


body = ODE_dBodyCreate()
geom = ODE_dCreateBox(space, 1, 1, 1, 1)
ODE_dGeomSetBody geom, body

ODE_dBodySetRotation(body, 45,155,0)
               
x#=ODE_dBodyGetPitch#(body)
y#=ODE_dBodyGetYaw#(body)
z#=ODE_dBodyGetRoll#(body)

Print "Start angles : 45 , 155 , 0"
Print "Ode angles : "+x+" , "+y+" , "+z

Print "Maybe ode_pitch=cos(start_yaw)*start_pitch"

Автор: Jimon (jimon.j1m0n@gmail.com)

Другие

Друзья