В OpenGL я рисую 2D изометрическую сетку. (картинка: http://i.imgur.com/nUZax.png). Пожалуйста, не обращайте внимания на неаккуратный код, так как многие из них просто пытаются разобраться, я пытаюсь замарать руки этим материалом, прежде чем я правильно напишу часть плитки моего реального двигателя.OpenGL, изометрическая 2D-карта и текстуры
Каждая плитка имеет ширину 76 пикселей и высоту 38 пикселей. Теперь я хочу текстурировать каждую из плиток с небольшой текстурой травы, которую я сделал. Однако, это не будет хорошо!
Моя проблема в том, что текстура продолжает выглядеть все испорченной. Это намного меньше, чем должно быть (наполовину размер), и он окружен белым. Это код, который я использую для применения текстуры (размером 76x38, конечно!).
void drawSquare(int x, int y) {
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_QUADS);
glTexCoord2i(38, -19); glVertex2i(x+38, y);
glTexCoord2i(-38, 19); glVertex2i(x, y+19);
glTexCoord2i(38, -19); glVertex2i(x-38, y);
glTexCoord2i(-38, 19); glVertex2i(x, y-19);
glEnd();
}
Это часть кода, который вычисляет X и Y.
for (int y = 1; y < gridY+1; y++) {
for (int x = 1; x < gridX+1; x++) {
drawSquare((x-y) * 38 + (SCREEN_SIZE_X/2), (x+y) * 19);
}
}
я, вероятно, следует добавить, что я ставлю настройки моего орто, как это.
glOrtho(0, SCREEN_SIZE_X, 0, SCREEN_SIZE_Y, -1, 1);
(SCREEN_SIZE_X и SCREEN_SIZE_Y просто быть 800х600)
Любой, кто мог бы помочь мне здесь? Это было бы очень полезно. Возможно, чтобы это стало более ясным, вот как это выглядит сейчас!
EDIT: После некоторой помощи это было изменено на это.
glBegin(GL_QUADS);
//glColor3f(r, g, b);
glTexCoord2f(0,1); glVertex2i(x+38, y);
glTexCoord2f(1,1); glVertex2i(x, y+19);
glTexCoord2f(1,0); glVertex2i(x-38, y);
glTexCoord2f(0,0); glVertex2i(x, y-19);
glEnd();
Результат: http://i.imgur.com/sOqsH.png
Я пробовал это, но затем текстура все еще выходит из строя. Я мог бы показать вам, как это выглядит в этом случае. –
Вы зажимали ваши координаты текстуры между 0 и 1? попробуйте использовать только 0 и 1 и посмотреть, отображается ли текстура _completely_ в каждой плитке, если нет, то что-то еще не так ... – Rookie
Обновлено исходное сообщение с снимком экрана и кодом. –