瀏覽代碼

assimp_cmd: Fix strict-aliasing warnings

Turo Lamminen 7 年之前
父節點
當前提交
10f4b6f95c
共有 1 個文件被更改,包括 14 次插入3 次删除
  1. 14 3
      tools/assimp_cmd/WriteDumb.cpp

+ 14 - 3
tools/assimp_cmd/WriteDumb.cpp

@@ -177,6 +177,17 @@ inline uint32_t Write<aiVector3D>(const aiVector3D& v)
 	return t;
 }
 
+// -----------------------------------------------------------------------------------
+// Serialize a color value
+template <>
+inline uint32_t Write<aiColor3D>(const aiColor3D& v)
+{
+	uint32_t t = Write<float>(v.r);
+	t += Write<float>(v.g);
+	t += Write<float>(v.b);
+	return t;
+}
+
 // -----------------------------------------------------------------------------------
 // Serialize a color value
 template <>
@@ -566,9 +577,9 @@ uint32_t WriteBinaryLight(const aiLight* l)
 		len += Write<float>(l->mAttenuationQuadratic);
 	}
 
-	len += Write<aiVector3D>((const aiVector3D&)l->mColorDiffuse);
-	len += Write<aiVector3D>((const aiVector3D&)l->mColorSpecular);
-	len += Write<aiVector3D>((const aiVector3D&)l->mColorAmbient);
+	len += Write<aiColor3D>(l->mColorDiffuse);
+	len += Write<aiColor3D>(l->mColorSpecular);
+	len += Write<aiColor3D>(l->mColorAmbient);
 
 	if (l->mType == aiLightSource_SPOT) {
 		len += Write<float>(l->mAngleInnerCone);