Я, когда на собеседовании слышу первым вопросом "сколько будет два в восьмой" в который раз осознаю, как тонка прослойка. Грустно не то, что все читали этот Баткинский текст, а то, что он практически единственный. Хотя где Баткин и где автор вопроса.
Текстурки на треугольнички лепить - тоже неплохо бы немного понимать в математике.
1. Как посчитать площадь треугольника по трем вершинам? Двум векторам?
2. Как именно выбирается нужная мипмапа?
3. Как именно работают встроенные алгоритмы фильтрации текстур?
4. Как быстро тесселировать полигон, заданый вершинами?
5. Как быстро превратить indexed triangled в стрипы, скажем?
итд, математика, естественно несложная. Но судя по собеседованиям - и это доставляет морщин на юные лбы.
Самый переносимый на сегодняшний день язык - это, очевидно С++. Движок пишется на С++, конкретные реализации абстракций интерфейсов - на нем же, с использованием GAPI платформы (OpenGL, DX, Orion...), под каждую платформу пишется нативный лаунчер, скажем, который инициализирует необходимые системные API и умеет грузить нативный код движка (в андроиде это jni интерфейсы, связывающие минимальный код на Java c нативной библиотекой, iOS - что-то, написанное на ObjC с теми же задачами...). Идея в том, что на сей момент нет платформы, которая не умеет posix :)
Ну можно и в один проход. Аргументы - если в файле больше ничего нет, то размер памяти явно позволяет разместить в памяти весь файл. Тупо читаем файл в буфер, прямо в этом буфере переставляем местами значения (ну, транспонируем матрицу, на самом то деле :) - и кастим к нужному типу массива. Нормальная задача.
Я бы в этой компании не стал бы использовать "посмотрим как ты напишешь без библиотек", право :) А то можно и увидеть. А комплексы неполноценности в молодости трудно поддаются коррекции :)
А, вы про параметрическую эквализацию, тогда да, эьто цифровой фильтр (второго вроде порядка, я забыл уже, давно это было). Я думал - 1/3 октавная непрерывная.