我想做一个 HTML 渲染来显示 HTML 文档,而不是在线网页。然后,当我单击 HTML 控件时,它仅显示我单击的 HTML。真正的目的是获取从根元素到所选标签的xpath。
我正在尝试实现论文“Single-Pass Wireframe Rendering”,这看起来很简单,但它给了我我所期望的厚、暗值。
这篇论文没有给出计算海拔的确切代码,所以我按照我认为合适的方式做了。代码应该将三个顶点投影到视口空间,获取它们的“高度”并将它们发送到片段着色器。
片段着色器确定最近边缘的距离并生成一个边缘强度。我不确定我应该用这个值做什么,但由于它应该在 [0,1] 之间缩放,我将逆与我的输出颜色相乘,但它非常弱。
我有几个问题,我不确定是否在论文中得到解决。首先,是否应该在 2D 而不是 3D 中计算高度?其次,他们站点 DirectX 功能,其中 DirectX 具有不同的视口空间 z 范围,对吗?那有关系吗?我将输出高度距离与视口空间坐标的 w 值相乘,因为他们建议校正透视投影。
未校正的图像似乎有明显的问题,无法校正更远侧的透视,但透视校正的图像具有非常弱的值。
谁能看到我的代码有什么问题或如何从这里调试它?
我在 GLSL 中的顶点代码...
float altitude(in vec3 a, in vec3 b, in vec3 c) { // for an ABC triangle
vec3 ba = a - b;
vec3 bc = c - b;
vec3 ba_onto_bc = dot(ba,bc) * bc;
return(length(ba - ba_onto_bc));
}
in vec3 vertex; // incoming vertex
in vec3 v2; // first neighbor (CCW) …Run Code Online (Sandbox Code Playgroud) 我想在 JComboBox 中放置一个 JButton。此按钮允许用户浏览文件。用户选择的文件被添加到 JComboBox 列表中。我该怎么做呢?我使用某种渲染器吗?谢谢你。
编辑: 在阅读有关 ListCellRenderer 的更多信息后,我尝试了以下代码:
JComboBox comboBox = new JComboBox(new String[]{"", "Item1", "Item2"});
ComboBoxRenderer renderer = new ComboBoxRenderer();
comboBox.setRenderer(renderer);
class ComboBoxRenderer implements ListCellRenderer {
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
JButton jbutton = new JButton("Browse");
return jbutton;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的问题是按钮“浏览”将被添加 3 次,我希望它只显示一次并在它下方显示 Item1 和 Item2 作为普通/常规组合框选择对象。
根据规格:
如果成员是标量或向量数组,则根据规则(1)、(2)和(3),将基本对齐 + * 和数组步幅设置为匹配单个 + * 数组元素的基本对齐,并将 + * 向上舍入到 vec4 的基本对齐方式。数组可能在 + * 端有填充;数组后面的成员的基本偏移量向上舍入 + * 到基本对齐的下一个倍数。
这是否意味着如果我有一个大小为 3 的 (float)vec3 数组,它会是
vec3,vec3,vec3, (12 个空字节达到 vec4 的倍数), (16 个空字节因为最后一句)
或者
vec3, (4 个空字节),vec3,(4 个空字节)vec3,(4 个空字节), (16 个空字节因为最后一句)
之后RenderTargetBitmap就太慢了。我尝试了一种不同的方法。不幸的是我的尝试没有成功。希望你们中的一些人能够弄清楚为什么这段代码不起作用。
var myPopup = new Popup();
var child = new Grid() { Background = new VisualBrush(myVisual)};
myPopup.StaysOpen = false;
myPopup.Child = child;
myPopup.IsOpen = false;
myPopup.Opened += (sender, args) =>
{
var source = ((HwndSource)PresentationSource.FromVisual(myPopup.Child));
var image = new Bitmap(1000,1000);
using (Graphics gr = Graphics.FromHwnd(source.Handle))
{
var ptr = gr.GetHdc();
using (Graphics g = Graphics.FromHdc(ptr))
{
g.DrawImage(image, new System.Drawing.Point(0, 0));
}
gr.ReleaseHdc(ptr);
}
//The image is just black...
image.Save("test.png");
myPopup.IsOpen = false;
};
myPopup.IsOpen = true;
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Shiny 中的选项卡编写一个应用程序,该应用程序引用来自文本框的相同输入。
输入:
column(2, textInput(inputId = "sh1", label = "Stakeholder #1's name"))
输出:
tabPanel("#1 vs #2",
fluidRow(
column(3),
column(2, textOutput(outputId = "sh1o")),
column(2, "vs"),
column(2, textOutput(outputId = "sh2o"))
),
tabPanel("#1 vs #3",
fluidRow(
column(3),
column(2, textOutput(outputId = "sh1o")),
column(2, "vs"),
column(2, textOutput(outputId = "sh3o"))
),
Run Code Online (Sandbox Code Playgroud)
渲染:
output$sh1o <- renderText(input$sh1)
据我所知,Shiny 不允许多次使用输入。
有什么办法可以使这项工作?
可以将相同的输入分配给临时变量,然后分配给输出吗?
我正在尝试渲染视频。但我想将其渲染为恒定速度。例子 :
ffmpeg -stream_loop -1 -i 113856_video_0.ts -c:v copy -c:a aac -bufsize 3600k -maxrate 1800k -rtbufsize 15M -metadata comment="screen113856" -preset ultrafast -g 50 -r 4 -sc_th 0 -threads 1 out.mp4
这个 ffmpeg 可以很好地渲染视频,像这样输出
帧=77590 fps=113 q=-1.0 大小= 596650kB 时间=00:51:43.67 比特率=1574.8kbits/s 速度=10.51x
你可以看到 speed=10.51x ,它很快,但它占用了我所有的 CPU。如果我使用 ffmpeg -re,它呈现为 speed=1x ,对 CPU 有好处,但需要时间。我可以以特定速度渲染视频吗?
有一个选项可以使用 cpulimit
cpulimit -l 20 ffmpeg ...
几乎解决了我的情况,但是: - 有时它不起作用,ffmpeg 仍然占用 100% CPU - 对于每个视频,我必须设置 CPU 数量限制 (-l 20, 30) 以获得特定速度。我想自动完成。
PDFBox 提供渲染整个页面的功能,但无法仅渲染页面的特定矩形。
这段代码对我有用。但如上所述,它渲染整个页面,我需要一种方法来渲染 pdf 文件的一小部分区域:
File file = new File("package.pdf");
PDDocument document = PDDocument.load(file);
PDFRenderer renderer = new PDFRenderer(document);
BufferedImage image = renderer.renderImageWithDPI(0, 400);
ImageIO.write(image, "PNG", new File("C:/package1.png"));
document.close();
Run Code Online (Sandbox Code Playgroud)
我会对解决方案感到非常高兴,因为我几个小时都没有找到解决方案
我的 stenciljs 渲染函数目前是用打字稿这样编写的:
render() {
if( this._isInline ) {
return (
<span>
<slot />
</span>
);
} else {
return (
<div>
<slot />
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
但我更喜欢如果我能写成这样:
render() {
const tag = this._isInline ? 'span' : 'div';
return (
<{tag}>
<slot />
</{tag}>
);
}
Run Code Online (Sandbox Code Playgroud)
但这给了我一堆错误消息。
有没有办法编写 jsx 代码,以便我有条件打开和关闭标记?
我正在尝试OrbitControls在 THREE.js 中使用。如果我let cameraControl = new OrbitControls(camera)从下面删除该行,则不会出现错误。但是现在,我有“未捕获的类型错误:无法读取未定义的属性‘addEventListener’”
我尝试更改OrbitControls(camera)为THREE.OrbitControls(camera),然后出现“未捕获的类型错误:THREE.OrbitControls 不是构造函数”。
我尝试OrbitControls.js使用<script src=...></script>external"module"而不是导入import {OrbitControls} from ...;,但它不起作用,我也尝试移动let cameraControl = new OrbitControls(camera)到其他行,但也不起作用。
任何想法如何解决?
<body>
<script type="module">
import * as THREE from 'https://threejsfundamentals.org/threejs/resources/threejs/r115/build/three.module.js';
import {OrbitControls} from 'https://threejsfundamentals.org/threejs/resources/threejs/r115/examples/jsm/controls/OrbitControls.js';
let scene, renderer, camera
let cube
function init() {
scene = new THREE.Scene()
renderer = new THREE.WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(renderer.domElement)
camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 100)
let …Run Code Online (Sandbox Code Playgroud)