git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1137 993157c7-ee19-0410-b2c4-bb4e9862e678
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user