git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1137 993157c7-ee19-0410-b2c4-bb4e9862e678

This commit is contained in:
chrisf
2007-07-07 08:14:15 +00:00
parent 572533978b
commit e9f5879b1e
2 changed files with 35 additions and 4 deletions

View File

@@ -31,7 +31,7 @@ namespace OpenRa.Game
Dictionary<Sheet, IndexBuffer> drawBatches = new Dictionary<Sheet, IndexBuffer>(); Dictionary<Sheet, IndexBuffer> drawBatches = new Dictionary<Sheet, IndexBuffer>();
Effect effect; Effect effect;
IntPtr textureParameter; IntPtr texture, scroll;
SpriteHelper spriteHelper; SpriteHelper spriteHelper;
FontHelper fontHelper; FontHelper fontHelper;
@@ -144,7 +144,8 @@ namespace OpenRa.Game
LoadVertexBuffer(); LoadVertexBuffer();
effect = new Effect(device, File.OpenRead("../../../" + shaderName)); effect = new Effect(device, File.OpenRead("../../../" + shaderName));
textureParameter = effect.GetHandle("DiffuseTexture"); texture = effect.GetHandle("DiffuseTexture");
scroll = effect.GetHandle("Scroll");
spriteHelper = new SpriteHelper(device); spriteHelper = new SpriteHelper(device);
fontHelper = new FontHelper(device, "Tahoma", 10, false); fontHelper = new FontHelper(device, "Tahoma", 10, false);
@@ -159,6 +160,33 @@ namespace OpenRa.Game
} }
} }
PointF scrollPos = new PointF(1, 5);
PointF oldPos;
int x1,y1;
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
x1 = e.X;
y1 = e.Y;
oldPos = scrollPos;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.Button != 0)
{
int dx = x1 - e.X;
int dy = y1 - e.Y;
scrollPos = oldPos;
scrollPos.X += (float)dx / 320.0f;
scrollPos.Y += (float)dy / 240.0f;
}
}
void Frame() void Frame()
{ {
device.Begin(); device.Begin();
@@ -170,9 +198,11 @@ namespace OpenRa.Game
effect.Begin(); effect.Begin();
effect.BeginPass(0); effect.BeginPass(0);
effect.SetValue(scroll, scrollPos);
foreach (KeyValuePair<Sheet, IndexBuffer> batch in drawBatches) foreach (KeyValuePair<Sheet, IndexBuffer> batch in drawBatches)
{ {
effect.SetTexture(textureParameter, batch.Key.texture); effect.SetTexture(texture, batch.Key.texture);
effect.Commit(); effect.Commit();
batch.Value.Bind(); batch.Value.Bind();

View File

@@ -3,6 +3,7 @@
//-------------------------------------------------------- //--------------------------------------------------------
shared texture DiffuseTexture; shared texture DiffuseTexture;
shared float2 Scroll;
sampler s_DiffuseTexture = sampler_state { sampler s_DiffuseTexture = sampler_state {
Texture = <DiffuseTexture>; Texture = <DiffuseTexture>;
@@ -31,7 +32,7 @@ struct FragmentIn {
VertexOut Simple_vp(VertexIn v) { VertexOut Simple_vp(VertexIn v) {
VertexOut o; VertexOut o;
o.Position = float4( v.Position.x / 320.0f - 0.5f - 2, 5-v.Position.y / 240.0f, 0, 1 ); o.Position = float4( v.Position.x / 320.0f - 0.5f - Scroll.x, Scroll.y - v.Position.y / 240.0f, 0, 1 );
o.Tex0 = v.Tex0; o.Tex0 = v.Tex0;
return o; return o;
} }