我需要让用户可以插入一些自定义几何体,比如一个点。
他可以指定大小和颜色。
尝试了解不同参数的工作原理,我在平台上得到了这些值:
GL_POINT_SIZE_MIN:33062
GL_POINT_SIZE_MAX:33063
GL中不推荐使用GL_POINT_SIZE_RANGE和GL_POINT_SIZE_GRANULARITY 版本1.2和更高版本。他们的功能已被取代 GL_SMOOTH_POINT_SIZE_RANGE和GL_SMOOTH_POINT_SIZE_GRANULARITY。
GL_SMOOTH_POINT_SIZE_RANGE:2834
GL_SMOOTH_POINT_SIZE_GRANULARITY:2835
有人可以向我解释这些奇怪的价值吗?我的意思是,如何将最小值和最大值区别开来只有一个?
以上值采用以下方式:
System.out.println("max: "+GL2.GL_POINT_SIZE_MAX+" min: "+GL2.GL_POINT_SIZE_MIN);
System.out.println("range: "+GL2.GL_SMOOTH_POINT_SIZE_RANGE+" granularity: "+GL2.GL_SMOOTH_POINT_SIZE_GRANULARITY);
根据datenwolf和Denis Germ的建议,我现在正在重新查询参数如下:
float ps[] = new float[5];
gl2.glGetFloatv(GL2.GL_POINT_SIZE_MIN, ps, 0);
gl2.glGetFloatv(GL2.GL_POINT_SIZE_MAX, ps, 1);
gl2.glGetFloatv(GL2.GL_SMOOTH_POINT_SIZE_RANGE, ps, 2);
gl2.glGetFloatv(GL2.GL_SMOOTH_POINT_SIZE_GRANULARITY, ps,4);
System.out.println("min: "+ps[0]+" max: "+ps[1]);
System.out.println("range: "+ps[2]+" - "+ps[3]+" granularity: "+ps[4]);
现在我明白了:
min:0.0 max:63.375
范围:1.0 - 63.375粒度:0.125
它看起来更好,但是,如果范围从1.0开始,为什么min是0.0f?
答案 0 :(得分:1)
GL_POINT_SIZE_RANGE:glGet将返回两个值,其中第一个是最小值,而secound是最大点大小(从最小值到最大值)。
GL_POINT_SIZE_GRANULARITY:glGet将返回一个值,该值描述粒度,例如0.1:您可以指定点大小为1.1,1.2,1.3,但不是1.05,1.15等。