2013-02-13 3 views
3

Я пытался объединить несколько уроков riemers, чтобы сделать ландшафт, который текстурирован и освещен. Я почти там, но я не могу правильно применить текстуру. Я считаю, что проблема заключается в SetUpVertices() с настройкой координат текстуры. Я знаю, что в настоящее время код читает, что все они настроены на (0, 0), и мне нужно, чтобы они были установлены в углы текстуры, но я не могу получить код правильно. Кто-нибудь может помочь?xna Текстурные координаты

private void SetUpVertices() 
{ 
    vertices = new VertexPositionNormalTexture[terrainWidth * terrainHeight]; 
    for (int x = 0; x < terrainWidth; x++) 
    { 
     for (int y = 0; y < terrainHeight; y++) 
     { 
      vertices[x + y * terrainWidth].Position = new Vector3(x, -y, heightData[x, y]); 
      vertices[x + y * terrainWidth].TextureCoordinate.X = 0; 
      vertices[x + y * terrainWidth].TextureCoordinate.Y = 0; 
     } 
    } 
} 

Я добавил полный код Game1.cs к этому Pastie http://pastebin.com/REd8QDZA

+0

Я редактировал Ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

Учитывая, что теги относятся к контенту сообщения, не обязательно ли, чтобы заголовки содержали их, если сам титул тоже должен быть релевантным? – luigivampa

+0

Нет, это не так. Пожалуйста, прочитайте эту ссылку. Если теги имеют отношение к вопросу, поместите их в область тегов. Если они не имеют отношения к вопросу, пожалуйста, не используйте их. –

ответ

3

Вы можете растянуть текстуру по всей поверхности интерполяции от 0 до 1:

vertices[x + y * terrainWidth].TextureCoordinate.X = x/(terrainWidth - 1.0); 
vertices[x + y * terrainWidth].TextureCoordinate.Y = y/(terrainHeight - 1.0); 
+0

Я знал, что это будет что-то простое, но я просто не мог понять. Я был на нем целыми днями! Я люблю тебя, :) – luigivampa

+0

Я заметил, что когда я масштабирую поверхность, текстура растягивается по всей местности. Я надеялся, что текстура добавится к каждому из треугольников. Спасибо за помощь, которую вы уже дали, но могу ли я беспокоить вас за другое предложение? – luigivampa

+0

@luigivampa Вам нужно будет присвоить текстуру, как вы, от 0 до 1. Если вы хотите, чтобы она повторялась, просто нажмите <0 and > 1. –

Смежные вопросы