void LOADERDECL TexCoord_ReadDirect() { for (int i = 0; i != N; ++i) DataWrite(TCScale(DataRead<T>())); LOG_TEX<N>(); ++tcIndex; }
void LOADERDECL TexCoord_ReadDirect() { auto const scale = tcScale[tcIndex]; DataWriter dst; DataReader src; for (int i = 0; i != N; ++i) dst.Write(TCScale(src.Read<T>(), scale)); LOG_TEX<N>(); ++tcIndex; }
void LOADERDECL TexCoord_ReadIndex() { static_assert(!std::numeric_limits<I>::is_signed, "Only unsigned I is sane!"); auto const index = DataRead<I>(); auto const data = reinterpret_cast<const T*>(cached_arraybases[ARRAY_TEXCOORD0 + tcIndex] + (index * arraystrides[ARRAY_TEXCOORD0 + tcIndex])); for (int i = 0; i != N; ++i) DataWrite(TCScale(Common::FromBigEndian(data[i]))); LOG_TEX<N>(); ++tcIndex; }
void TexCoord_ReadDirect(VertexLoader* loader) { auto const scale = loader->m_tcScale[loader->m_tcIndex]; DataReader dst(g_vertex_manager_write_ptr, nullptr); DataReader src(g_video_buffer_read_ptr, nullptr); for (int i = 0; i != N; ++i) dst.Write(TCScale(src.Read<T>(), scale)); g_vertex_manager_write_ptr = dst.GetPointer(); g_video_buffer_read_ptr = src.GetPointer(); LOG_TEX<N>(); ++loader->m_tcIndex; }
void TexCoord_ReadIndex(VertexLoader* loader) { static_assert(std::is_unsigned<I>::value, "Only unsigned I is sane!"); auto const index = DataRead<I>(); auto const data = reinterpret_cast<const T*>(VertexLoaderManager::cached_arraybases[ARRAY_TEXCOORD0 + loader->m_tcIndex] + (index * g_main_cp_state.array_strides[ARRAY_TEXCOORD0 + loader->m_tcIndex])); auto const scale = loader->m_tcScale[loader->m_tcIndex]; DataReader dst(g_vertex_manager_write_ptr, nullptr); for (int i = 0; i != N; ++i) dst.Write(TCScale(Common::FromBigEndian(data[i]), scale)); g_vertex_manager_write_ptr = dst.GetPointer(); LOG_TEX<N>(); ++loader->m_tcIndex; }