Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > 2D-программирование

Ответ
 
Опции темы
Старый 19.11.2011, 17:43   #1
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Как задать "все" координаты для DrawImage

Нужно для всех четырех точек задать координаты, во внутреностях бмакса не особо шарю, так что буду рад за наставление.
Вообщем нужно примерно так :
Drawimage Timage,x1,y1,x2,y2,x3,y3,x4,y4,frame
(Offline)
 
Ответить с цитированием
Старый 19.11.2011, 18:11   #2
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Как задать "все" координаты для DrawImage

Отскейль изображение до нужного размера после чего нарисуй в требуемой позиции.

(это если не надо деформаций)
__________________
(Offline)
 
Ответить с цитированием
Старый 19.11.2011, 18:19   #3
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Ответ: Как задать "все" координаты для DrawImage

К сожалению именно деформации и нужны. =)

За вариант решения спасибо...я уже думал как бы обойтись только ним, но он не подходит для достижениянужной цели, и еффекта =(
(Offline)
 
Ответить с цитированием
Старый 20.11.2011, 21:23   #4
Черный крыс
 
Сообщений: n/a
Ответ: Как задать "все" координаты для DrawImage

Глянь в сторону DrawPoly() - но тут нет текстур, Вобсчем - переписать эту функцию - дело нескольких минут =).
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Dzirt (20.11.2011)
Старый 20.11.2011, 21:44   #5
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Ответ: Как задать "все" координаты для DrawImage

Переписать "DrawPoly" или "DrawImage" для достижения цели?
Помоги пожалуйста, буду очень благодарен.
(Offline)
 
Ответить с цитированием
Старый 20.11.2011, 22:38   #6
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Как задать "все" координаты для DrawImage

DrawPoly переписать. А вообще где то в инетах видал сорцы для DrawTexturedPoly
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Reizel за это полезное сообщение:
Dzirt (20.11.2011), Greymem (21.11.2011)
Старый 20.11.2011, 22:50   #7
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Ответ: Как задать "все" координаты для DrawImage

То что нужно, спасибо за подсказку!

http://www.blitzbasic.com/Community/...hp?topic=81258

Function DrawTexturedPoly( image:TImage,xyuv#[],frame=0, vertex = -1)
	Local handle_x#, handle_y#
	GetHandle handle_x#, handle_y#
	Local origin_x#, origin_y#
	GetOrigin origin_x#, origin_y#

	Local D3DDriver:TD3D7Max2DDriver = TD3D7Max2DDriver(_max2dDriver)

	Assert Image, "Image not found"

	If D3DDriver Then
		DrawTexturedPolyD3D ..
		D3DDriver,..
		TD3D7ImageFrame(image.Frame(frame)), ..
		xyuv, handle_x, handle_y, origin_x,origin_y, vertex*4
		Return
	End If

	Local OGLDriver:TGLMax2DDriver = TGLMax2DDriver(_max2dDriver)
	If OGLDriver Then
		DrawTexturedPolyOGL ..
		OGLDriver,..
		TGLImageFrame(image.Frame(frame)), ..
		xyuv, handle_x, handle_y, origin_x,origin_y, vertex*4
		Return
	End If
End Function


Function DrawTexturedPolyD3D( Driver:TD3D7Max2DDriver, Frame:TD3D7ImageFrame,xyuv#[],handlex#,handley#,tx#,ty# , vertex)
	If Driver.islost Return
	If xyuv.length<6 Return
	Local segs=xyuv.length/4
	Local len_ = Len(xyuv)

	If vertex > - 1 Then
		segs = vertex / 4
		len_ = vertex
	End If
	Local uv#[] = New Float[segs*6] ' 6


	Local c:Int Ptr=Int Ptr(Float Ptr(uv))

	Local ii:Int = 0
	For Local i=0 Until len_ Step 4
		Local x# = xyuv[i+0]+handlex
		Local y# = xyuv[i+1]+handley
		uv[ii+0] = x*Driver.ix+y*Driver.iy+tx
		uv[ii+1] = x*Driver.jx+y*Driver.jy+ty
		uv[ii+2] = 0 ' *********** THIS IS THE Z-COORDINATE
		c[ii+3] = Driver.DrawColor
		uv[ii+4] = xyuv[i+2]
		uv[ii+5] = xyuv[i+3]
		ii:+6
	Next

	Driver.SetActiveFrame Frame
	Driver.device.DrawPrimitive(D3DPT_TRIANGLEFAN,D3DFVF_XYZ| D3DFVF_DIFFUSE | D3DFVF_TEX1,uv,segs,0)
End Function

Function DrawTexturedPolyOGL (Driver:TGLMax2DDriver, Frame:TGLImageFrame, xy#[],handle_x#,handle_y#,origin_x#,origin_y#, vertex) 
	Private
	Global TmpImage:TImage
	Public
	
	If xy.length<6 Return
	
	Local rot#  = GetRotation()
	Local tform_scale_x#, tform_scale_y#
	GetScale tform_scale_x, tform_scale_y
	
	Local s#=Sin(rot)
	Local c#=Cos(rot)
	Const scale#=1.28
	Local ix#= c*tform_scale_x*scale
	Local iy#= -s*tform_scale_y*scale
	Local jx#= s*tform_scale_x*scale
	Local jy#= c*tform_scale_y*scale
	
	glBindTexture GL_TEXTURE_2D, Frame.name
	glEnable GL_TEXTURE_2D
	
	glBegin GL_POLYGON
	For Local i=0 Until Len xy Step 4
		If vertex > -1 And i >= vertex Then Exit
		Local x#=xy[i+0]+handle_x
		Local y#=xy[i+1]+handle_y
		Local u#=xy[i+2]
		Local v#=xy[i+3]
		glTexCoord2f u,v
		glVertex2f x*ix+y*iy+origin_x,x*jx+y*jy+origin_y
	Next
	glEnd
	If Not tmpImage Then tmpImage = CreateImage(1,1)
	DrawImage tmpImage, -100, - 100 ' Chtob zbit' flag texturi
End Function
Сапсибо также : Dex
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Dzirt за это полезное сообщение:
baton4ik (20.11.2011), Greymem (21.11.2011), Reizel (21.11.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com