|
С# Средство разработки на платформе .Net |
03.12.2012, 20:26
|
#196
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
ну а так-то я ничего не перепутал? Все условия верно записаны?
|
(Offline)
|
|
03.12.2012, 20:40
|
#197
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
Сообщение от wppt
ну а так-то я ничего не перепутал? Все условия верно записаны?
|
да вроде правильно, кроме развечто лишнего
|
(Offline)
|
|
03.12.2012, 22:13
|
#198
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
а может дело в том, что метод запускается именно по нажатию кнопки мыши? Я пробовал зажать и поводи по экрану - рисует нужным цветом
А вот в load случайно с самого начала rendertarget разве не полностью пуст? - Проверил, так и есть! Что же делать?
|
(Offline)
|
|
06.12.2012, 04:25
|
#199
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
Повторюсь, без полного кода ничем не смогу помочь. А телепатически- ты рисуешь текстуру только когда мышка зажата.
|
(Offline)
|
|
06.12.2012, 17:49
|
#200
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
вот ты ухватился за этот код! Сейчас будет все
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.IO;
using System.Threading.Tasks;
using System.Threading;
namespace WindowsGame4
{
public class mygam : Microsoft.Xna.Framework.Game
{
int overload;
float camscale = 1.5f;
RenderTarget2D mapr;
GraphicsDevice graphdev;
GraphicsDeviceManager myGraphics;
GraphicsProfile graphprof;
KeyboardState myKeyboardState;
MouseState mymouse;
ContentManager Content;
SpriteBatch batch1;
SpriteBatch batch2;
static SpriteFont main;
Random rand;
TimeSpan eltime = TimeSpan.Zero;
Color[] dat;
Color[] mapTextData;
Drawing Map;
Camera cam;
Matrix Camp;
Rectangle mapRect;
Vector2 vel;
int FPC = 0;
int FPS = 0;
World world = new World();
public mygam()
{
Window.Title = "myGam";
Window.AllowUserResizing = true;
myGraphics = new GraphicsDeviceManager(this);
myGraphics.PreferMultiSampling = true;
myGraphics.SynchronizeWithVerticalRetrace = false;
myGraphics.PreferredBackBufferWidth = 800;
myGraphics.PreferredBackBufferHeight = 600;
Content = new ContentManager(Services);
graphprof = new GraphicsProfile();
rand = new Random();
cam = new Camera(new Vector2(0,0));
dat = new Color[1] { new Color(0,0,0,0)};
Map = new Drawing(10, 10, false, new Vector2(0, 0));
}
protected override void Initialize()
{
base.Initialize();
world.Init();
}
protected override void LoadContent()
{
var parameters = myGraphics.GraphicsDevice.PresentationParameters;
graphdev = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, graphprof, parameters);
mapr = new RenderTarget2D(GraphicsDevice, 800, 600, false, SurfaceFormat.Color, DepthFormat.Depth24);
Content.RootDirectory = "Content";
batch1 = new SpriteBatch(GraphicsDevice);
batch2 = new SpriteBatch(GraphicsDevice);
Map.loading(Content, @"NewFolder1\map");
mainf = Content.Load<SpriteFont>("mainf");
mapTextData = new Color[800 * 600];
mapr.GetData<Color>(mapTextData);
}
protected override void UnloadContent()
{
}
protected override void Update(GameTime gameTime)
{
Camp = cam.Targeted(cam.position, vel,0,camscale);
eltime += gameTime.ElapsedGameTime;
if (eltime > TimeSpan.FromSeconds(1))
{
eltime -= TimeSpan.FromSeconds(1);
FPS = FPC;
FPC = 0;
}
world.UpdateWorld();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.SetRenderTarget(mapr);
world.UpdateWorld();
FPC++;
string FPSS = string.Format("fps: {0}", FPS);
batch1.Begin(SpriteSortMode.Deferred,BlendState.AlphaBlend,null,null,null,null,Camp);
Map.draw(batch1);
batch1.End();
GraphicsDevice.SetRenderTarget(null);
GraphicsDevice.Clear(Color.CornflowerBlue);
batch2.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);
batch2.Draw(mapr, Vector2.Zero, Color.White);
if (mymouse.LeftButton == ButtonState.Pressed && overload == 0)
{
try
{
mapr.GetData<Color>(0, new Rectangle(mymouse.X, mymouse.Y, 1, 1), dat, 0, 1);
overload = 60;
}
catch
{ }
}
if (mymouse.RightButton == ButtonState.Pressed)
{
fill(mymouse.X, mymouse.Y, new Color(254, 230, 158, 255), dat[0], mapr);
}
Color a = dat[0];
string aa = string.Format("{0}", a);
batch2.DrawString(mainf, aa, new Vector2(33, 400), Color.Black);
if (overload > 0)
overload--;
}
batch2.End();
base.Draw(gameTime);
}
fill(int x, int y, Color newC, Color oldC,RenderTarget2D rend)
{
Color[] colors = new Color[1];
rend.GetData(0, new Rectangle(x, y, 1, 1), colors, 0, 1);
if (x >= 0 && y >= 0 && x < rend.Width && y < rend.Height && colors[0] == oldC && colors[0] != newC)
{
colors [0] = newC;
mapTextData[y * rend.Width + x] = colors[0];
rend.SetData<Color>(mapTextData);
fill(x - 1, y, newC, oldC, rend);
fill(x + 1, y, newC, oldC, rend);
fill(x, y - 1, newC, oldC, rend);
fill(x, y + 1, newC, oldC, rend);
}
else return;
}
}
}
Последний раз редактировалось wppt, 06.12.2012 в 20:22.
|
(Offline)
|
|
06.12.2012, 19:02
|
#201
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
Что это за код то? лишняя закрывающая скобка в Draw.
Не нужно создавать два SpritBatch, используй один.
В коде вообще каша какаето, ты наспех чтото удалял и переносил видимо, потому что имена переменных несовпадают даже в одном методе, mpr -morender, Rock_TextData,
if (x >= 0 && y >= 0 && x < rend.Width && y < rend.Height && [b]colors[0] == oldC && colors[0] != newC[/b])
Ну и вообще логикадолжна быть вся в Update а не в драве.
вот ты ухватился за этот код! Сейчас будет все
|
Пойми, лично мне твой код не нужен, не у меня с ним проблемы. Но если уж ты просишь помощи, до дай хотябы увидеть что ты натворил.
Последний раз редактировалось Dream, 06.12.2012 в 20:03.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
06.12.2012, 20:20
|
#202
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
Да, что-то я поторопился! Надеюсь, теперь все исправлено.
Ну так что же у меня не так?
|
(Offline)
|
|
06.12.2012, 21:05
|
#203
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
Сообщение от wppt
Да, что-то я поторопился! Надеюсь, теперь все исправлено.
Ну так что же у меня не так?
|
Ну скинь исправленный код. я ведь не в курсе что ты атм исправил и как оно теперь выглядит.
|
(Offline)
|
|
07.12.2012, 17:04
|
#204
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
код выше уже исправлен
Но все равно не работает так, как надо
|
(Offline)
|
|
07.12.2012, 18:19
|
#205
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
где присваивание mymouse значения?
В общем, можешь скинуть весь проект, вечером погляжу что не так, нет - так нет, мне лень наугад направлять тебя.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.12.2012, 19:57
|
#206
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
сейчас, только все лишнее поудаляю
http://rghost.ru/42073190
вот
|
(Offline)
|
|
07.12.2012, 21:09
|
#207
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
Тю блин, ты каждый раз перетираешь все изменения в рендер таргете.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.12.2012, 22:06
|
#208
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
неужели? А как тогда надо?
|
(Offline)
|
|
07.12.2012, 22:10
|
#209
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
protected override void LoadContent() { var parameters = myGraphics.GraphicsDevice.PresentationParameters;
graphdev = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, graphprof, parameters);
mapr = new RenderTarget2D(GraphicsDevice, 800, 600, false, SurfaceFormat.Color, DepthFormat.Depth24);
Content.RootDirectory = "Content";
batch1 = new SpriteBatch(GraphicsDevice); batch2 = new SpriteBatch(GraphicsDevice);
Map.load(Content, @"asd");
mainf = Content.Load<SpriteFont>("MAINFN");
mapTextData = new Color[800 * 600];
GraphicsDevice.Clear(Color.CornflowerBlue); GraphicsDevice.SetRenderTarget(mapr);
batch1.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);
Map.draw(batch1);
batch1.End();
GraphicsDevice.SetRenderTarget(null); mapr.GetData<Color>(mapTextData);
}
protected override void Draw(GameTime gameTime) {
batch2.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null);
batch2.Draw(mapr, Vector2.Zero, Color.White);
Color a = dat[0]; string aa = string.Format("{0}", a); batch2.DrawString(mainf, aa, new Vector2(33, 400), Color.Black);
batch2.End();
base.Draw(gameTime); }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.12.2012, 22:57
|
#210
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
я не понял, а как же заливать тогда?
И почему устанавливать рендертаргет, очищать экран, и рисовать батч нужно именно в loadContent? Ах да, программа виснет и бросает stackoverflow.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:17.
|