IBets
> Школьники
> Пытаются умножить на 0.33
Обидно. Я уже прошел умножение на 0.33. Как умножать на 1?
Vlad2001_MFS
В поле вещественных чисел 1 нейтральный элемент по мультипликативной бинарной операции. Поэтому ничего делать не надо
IBets
А на 2? Нам какое-то заклинание давали, но я его не помню.
Vlad2001_MFS
Я не помню
Vlad2001_MFS
> А на 2
mod 2 что ли ?
innuendo
Он это хочет
mov RAX, X
mov RBX, 2
mul RAX RBX
innuendo
> mod 2 что ли ?
Да не, зачем мне остаток. Я про div.
Я надеюсь ты не всерьез воспринял мой вопрос про деление на 2?
IBets
> Он это хочет
Я в асме, конечно, не силен, но зачем для двойки 64битный регистр-то?
Vlad2001_MFS
На комуктере ты не заметишь разницы, если cделаешь как
mov bl 2
IBets
Конечно, так как bl - часть регистра RBX. Если мне не изменяет память, то bl - 8битный.
Все получилось, спасибо! Добавил цвет к вершинному шейдеру, который меняю через константный буфер.
Еще маленький вопрос:
Рисование треугольника из туториала в релизе (без моих правок), грузит CPU i5 2600K на 25-37% - это нормально? Что его так грузит?
P.S. Туториал 02 Vertices из DirectX9, который тоже рисует треугольник, вообще процессор не нагружает.
GeForce GTX 750 Ti
celsius
Ну обычный треугольник должен, нагружать CPU на 25% потому что у тебя 4 ядерный процессор и у тебя не догружен GPU. Если у тебя сложный шейдер, то нагрузка на GPU будет на 100%, а на CPU около нуля. Веселят додики на youtube которые говорят про раскрытие процессором видеокарты
А чего GPU дурака валяет? это же его расчеты и вывод? Он для этого предназначен и должен делать это лучше, разве нет?
celsius
Ну так ты рисуешь один тругольник. Время кадра очень низкое, поэтому СЗГ за промежуток времени чаще добавляет команды в командый буффер на исполнение GPU, из-за этого профайлер показывает высокую нагрузку. Сделай V-Sync и CPU не будет загружен
Понял, спасибо.
Было:
g_pSwapChain->Present(0, 0);
Стало:
g_pSwapChain->Present(1, 0);
и все нормально, нагрузки на CPU нет.
celsius
У тебя есть цикл обработки сообщений. У тебя нет многопоточности. Цикл работает постоянно, без задержек. Так как нет многопоточности, то твоя программа грузит одно ядро. То есть на одном ядре у тебя "без перерывов и выходных" крутится цикл, что загружает ядро. У тебя 4 ядра, 1 полностью занято программой, соответственно, загрузка процессора 25% плюс системные нагрузки в виде 2-3%.
Когда ты сделал g_pSwapChain->Present(1, 0), то твой цикл обработки сообщений стал прерываться, ожидая некого события. Это вертикальная синхронизация.
Тема в архиве.