我过去曾使用 Asymptote 生成大量图像。我最近升级到 2.65 版,但在编译简单文件时遇到了麻烦。(为了避免在我的 Windows 10 机器上产生混淆,我卸载了所有以前版本的 TeXLive 和 Asymptote,然后重新安装了新副本。还安装了 Ghostscript v 9.52。)
这是我的简单文件,名为test.asy
:
size(5cm,0);
import three;
draw(unitcube);
如果我使用 进行编译asy -f html test.asy
,我就可以在浏览器中正常看到单位立方体。
如果我使用它进行编译asy -f pdf test.asy
,我会得到一个最初不显示任何内容的 pdf,但在 Adobe Reader 中我可以单击并获得可旋转的 3D 图像。
如果我使用 进行编译asy -f pdf -noprc -render 0 test.asy
,我会得到一个低质量的静态 pdf 图像。如果我选择... -f png ...
但是,如果我使用任何其他渲染设置(非 0)进行编译,或者根本没有渲染语句,我会收到一条很长的错误消息。
出了什么问题?我想构建一个高质量的 2D 图形(比 提供的更好-render=0
)。以下是错误消息:
Error: Preprocessor error
Error: failed to preprocess the source.
GL Compile error
#version 130
#extension GL_ARB_uniform_buffer_object : enable
#define WIDTH
#define Nlights 1
const int Nmaterials=48;
in vec3 position;
uniform mat3 normMat;
#ifdef NORMAL
#ifndef ORTHOGRAPHIC
out vec3 ViewPosition;
#endif
in vec3 normal;
out vec3 Normal;
#endif
in int material;
#ifdef COLOR
in vec4 color;
out vec4 Color;
#endif
#ifdef WIDTH
in float width;
#endif
uniform mat4 projViewMat;
uniform mat4 viewMat;
flat out int materialIndex;
void main()
{
vec4 v=vec4(position,1.0);
gl_Position=projViewMat*v;
#ifdef NORMAL
#ifndef ORTHOGRAPHIC
ViewPosition=(viewMat*v).xyz;
#endif
Normal=normalize(normal*normMat);
#endif
#ifdef COLOR
Color=color;
#endif
#ifdef WIDTH
gl_PointSize=width;
#endif
materialIndex=material;
}
terminate called after throwing an instance of 'int'