Faits :
A.
Par jugement du 18 janvier 2019, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a condamné X._, pour contrainte, contrainte sexuelle, contrainte sexuelle avec cruauté, viol et pornographie, a révoqué le sursis qui lui avait été accordé le 8 septembre 2015 et a infligé au prénommé une peine privative de liberté d'ensemble de quatre ans et demi, sous déduction de 599 jours de détention avant jugement et de 14 jours à titre de réparation du tort moral pour la détention subie dans des conditions illicites. Il a en outre ordonné que l'intéressé soit soumis à un traitement ambulatoire et a dit qu'il est le débiteur de A._ d'indemnités à hauteur de 10'000 fr., avec intérêts, à titre de réparation du tort moral et de 100 fr., avec intérêts, pour ses dépens. Il a enfin donné acte à cette dernière de ses réserves civiles pour le surplus.
B.
Par jugement du 15 mai 2019, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a très partiellement admis l'appel formé par X._ contre ce jugement et a réformé celui-ci en ce sens que ce dernier est condamné à une peine privative de liberté d'ensemble de quatre ans et demi, sous déduction de 599 jours de détention avant jugement et de 195 jours à titre de réparation du tort moral pour la détention subie dans des conditions illicites.
La cour cantonale a retenu les faits suivants.
B.a. X._ est né en 1989.
Le prénommé a effectué plusieurs courts séjours à l'Hôpital de B._, soit en 2012, en raison de troubles du comportement avec risques de passage à l'acte hétéro-agressif, en juillet 2014, pour mise à l'abri d'idées suicidaires, ainsi qu'en décembre 2014, pour mise à l'abri d'idées suicidaires scénarisées et hétéro-agressivité.
Le casier judiciaire de X._ fait état d'une condamnation, en 2010, pour violation grave des règles de la circulation routière, conduite sans permis, cession d'un véhicule à moteur à un conducteur sans permis, infraction à la LCR et opposition aux actes de l'autorité, d'une condamnation, en 2012, pour violence ou menace contre les autorités et les fonctionnaires et infraction à la LArm, ainsi que d'une condamnation, en 2015, pour vol, tentative de vol, dommages à la propriété, violation de domicile, conduite en état d'ébriété, violation des obligations en cas d'accident, vol d'usage, tentative de vol d'usage, conduite sans permis et sans assurance-responsabilité civile, usage abusif de permis ou de plaques de contrôle, usurpation de plaques de contrôle, infraction et contravention à la LStup et infraction à la LArm.
B.b. En cours de procédure, X._ a fait l'objet d'une expertise psychiatrique. Dans un rapport du 29 janvier 2018, les expertes ont posé un diagnostic de troubles mentaux et du comportement liés à l'utilisation de l'alcool, utilisation nocive pour la santé, ainsi que de trouble de la personnalité émotionnellement labile type impulsif et traits antisociaux. Elles ont par ailleurs indiqué que l'intéressé était capable d'apprécier le caractère illicite de ses actes, mais que sa capacité à se déterminer d'après cette appréciation était restreinte par son trouble de la personnalité et, principalement, par les aspects impulsifs et immatures de celui-ci, associés à des fonctions intellectuelles limitées.
B.c. A._, née en 1993, souffre d'un retard mental impliquant d'importantes difficultés d'apprentissage et de compréhension, affection qui a donné lieu, en 2014, à l'institution d'une curatelle de représentation.
La prénommée et X._ ont fait connaissance en 2016 et ont rapidement entretenu des relations sexuelles, lesquelles ont pris place au domicile de ce dernier. Entre le mois de juillet 2016 et la fin de leur relation en octobre de la même année, les deux intéressés ont entretenu une relation essentiellement de nature sexuelle, lors de laquelle, hormis des rapports sexuels mutuellement consentis, X._ a fait subir à A._, à plusieurs reprises, contre son gré, l'acte sexuel complet, ainsi que des fellations, des sodomies et des actes d'urolagnie et de scatologie.
B.d. A plusieurs reprises, au cours de cette relation, X._ a contraint A._ à subir l'acte sexuel complet, notamment sous la menace d'être giflée. La prénommée criait parfois pour alerter la mère de son compagnon, qui se trouvait sous le même toit. X._ plaçait alors sa main sur la bouche de sa partenaire pour la faire taire.
B.e. A plusieurs reprises, X._ a contraint A._ à l'acte de sodomie. Afin de briser la résistance de celle-ci, l'intéressé lui ordonnait de se laisser faire, lui donnait des fessées, la maintenait fortement par les mains, la menaçait d'aller "voir ailleurs" ou de s'en prendre à sa famille.
B.f. A une occasion, X._ a contraint A._ à lui prodiguer une fellation sur son balcon. Il l'a forcée à s'accroupir puis, tout en lui tenant la tête avec les mains, a introduit son pénis dans sa bouche. Face au refus de A._ d'avaler son sperme, l'intéressé a éjaculé sur le visage de sa partenaire.
B.g. A une occasion, dans sa salle de bain, alors que A._ avait expressément manifesté son refus, X._ a forcé cette dernière à lui prodiguer une fellation, en maintenant la tête de la prénommée contre son sexe. Lors de cet acte, X._ a uriné dans la bouche de A._, qui a avalé le liquide. Après ce premier épisode, il a exigé une seconde fellation, dans les mêmes circonstances, mais en filmant la scène. X._ a donc installé son téléphone portable sur la machine à laver et a replacé A._ dans la même posture. Au cours de la fellation, alors que cette dernière avait exprimé son désir d'arrêter, l'intéressé a derechef passé outre ce refus et n'a cessé son action qu'après avoir uriné sur le visage et le torse de sa partenaire.
Après ces deux fellations, X._ et A._ se sont rendus sous la douche. A cet endroit, tandis que le premier avait à nouveau enclenché la fonction "vidéo" de son téléphone portable, il a une fois encore exigé de la seconde qu'elle se soumette à l'acte sexuel. Face au refus de A._, X._ a déféqué, pris ses selles dans sa main et en a enduit le visage, le torse et le flanc de la prénommée, toujours sans le consentement de celle-ci.
Lors de cet épisode, X._ a interdit à A._ de parler à ses parents de ce qui s'était produit, en précisant qu'à défaut il se rendrait chez elle pour "casser la baraque" ou crever les pneus du véhicule de son père. Il s'est quant à lui, ensuite de ces événements, vanté de ce qu'il avait fait subir à A._ auprès de deux amis, leur a adressé des fichiers audio et des messages, dans lesquels, il expliquait, hilare, que cette dernière "avait soif" et qu'il lui avait donc donné ce qu'il "avait sous la main", en précisant : "une miss je lui est pisse dans la bouche elle a tous bu la cochonne".
Dans le courant du mois d'août 2016, X._ a encore envoyé à ses deux amis les deux enregistrements vidéo auxquels il avait procédé dans sa salle de bain.
B.h. X._ a visionné, à tout le moins entre le 6 mars et le 29 mai 2017, des vidéos pornographiques mettant en scène des actes de violence extrême entre adultes.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 15 mai 2019, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'il est acquitté, que sa libération est immédiatement ordonnée et qu'une indemnité correspondant à 250 fr. par jour de détention subi lui est allouée à titre de réparation du tort moral. Subsidiairement, il conclut à sa réforme en ce sens qu'il est condamné à une peine privative de liberté qui ne dépasse pas 24 mois, sous déduction des jours de détention effectués avant jugement et d'un nombre de jour correspondant au moins à un demi jour par jour de détention effectué dans des conditions illicites à titre de réparation du tort moral. Plus subsidiairement, il conclut à sa réforme en ce sens qu'il est condamné à une peine privative de liberté de quatre ans et demi, sous déduction des jours de détention effectués avant jugement et d'un nombre de jour correspondant au moins à un demi jour par jour de détention effectué dans des conditions illicites à titre de réparation du tort moral. Encore plus subsidiairement, il conclut à son annulation et au renvoi de la cause à l'autorité cantonale pour nouvelle décision. Il sollicite par ailleurs le bénéfice de l'assistance judiciaire.
Considérant en droit :
1.
Le recourant reproche à l'autorité précédente d'avoir violé son droit d'être entendu en refusant d'administrer diverses preuves.
1.1. Selon l'art. 389 al. 1 CPP, la procédure de recours se fonde sur les preuves administrées pendant la procédure préliminaire et la procédure de première instance. L'art. 389 al. 3 CPP règle les preuves complémentaires. Ainsi, la juridiction de recours administre, d'office ou à la demande d'une partie, les preuves complémentaires nécessaires au traitement du recours. Le droit d'être entendu, consacré par l'art. 107 CPP, garantit aux parties le droit de déposer des propositions relatives aux moyens de preuves (al. 1 let. e). Conformément à l'art. 139 al. 2 CPP, il n'y a pas lieu d'administrer des preuves sur des faits non pertinents, notoires, connus de l'autorité ou déjà suffisamment prouvés. Cette disposition codifie, pour la procédure pénale, la règle jurisprudentielle déduite de l'art. 29 al. 2 Cst. en matière d'appréciation anticipée des preuves (arrêts 6B_730/2019 du 9 août 2019 consid. 1.1.2; 6B_672/2019 du 6 août 2019 consid. 1.1; 6B_416/2019 du 4 juillet 2019 consid. 1.1). Le refus d'instruire ne viole ainsi le droit d'être entendu des parties que si l'appréciation anticipée de la pertinence du moyen de preuve offert, à laquelle le juge a procédé, est entachée d'arbitraire (ATF 144 II 427 consid. 3.1.3 p. 435; 141 I 60 consid. 3.3 p. 64).
1.2. Le recourant a requis la production du dossier de l'enquête pénale dirigée contre C._ dans le canton du Valais.
1.2.1. A cet égard, la cour cantonale a exposé que les actes reprochés au recourant avaient initialement été rapportés au père de l'intimée par C._, lequel s'était donc trouvé à l'origine de la dénonciation pénale. L'hypothèse d'une manipulation de l'intimée devait cependant être exclue, au vu de la cohérence et du caractère mesuré des accusations qui avaient été formulées par celle-ci dans le cadre de la présente cause. Selon l'autorité précédente, les déclarations de C._, non plus que les informations recueillies sur son compte dans le cadre de l'enquête pénale dirigée contre lui, ne pourraient contredire ce constat. La production du dossier en question était donc inutile.
1.2.2. Le recourant n'explique pas quel élément décisif pourrait être trouvé dans le dossier dont il a requis la production, mais indique que celui-ci pourrait apporter "une lumière nouvelle sur la personnalité de M. C._, sur ses antécédents, son rôle, ses liens avec [l'intimée] et sa famille et sur son conflit avec le recourant". On ne voit pas en quoi la cour cantonale aurait pu verser dans l'arbitraire en refusant la production dudit dossier, dont le recourant ne prétend pas qu'il aurait un lien direct avec la présente affaire.
1.3. Le recourant fait grief à l'autorité précédente d'avoir refusé l'audition de D._, l'ex-compagnon de l'intimée.
1.3.1. Sur ce point, la cour cantonale a indiqué que les actes de violence et de contrainte sexuelle qui avaient été prêtés au prénommé par l'intimée au cours de l'instruction ne faisaient pas l'objet de la présente cause. Les déclarations de l'intimée montraient que cette dernière distinguait clairement les comportements reprochés au recourant de ceux attribués à D._. Au cours de l'instruction, l'intimée avait, pour évoquer les événements dénoncés, parlé d'un dénommé "E._" et non de son ex-compagnon. L'intéressée ne mélangeait pas les deux relations, puisqu'elle avait déclaré avoir peur que le recourant puisse la frapper dès lors qu'elle avait déjà subi de telles sévices auprès de D._. En outre, l'intimée avait fourni de nombreux détails concernant les événements qu'elle avait mis en lien avec le recourant. Ce dernier, s'il avait contesté toute contrainte, avait pour l'essentiel admis que les actions relatées par l'intimée étaient réellement survenues, en particulier les épisodes ayant pris place sur son balcon et dans sa salle de bain. Interrogée durant les débats d'appel sur la possibilité qu'elle eût confondu les agissements de D._ avec ceux reprochés au recourant, l'intimée avait certes indiqué que les "choses étaient floues", qu'elle n'arrivait plus "à distinguer" et que "cela avait toujours été un peu flou". Cette déclaration était cependant sans portée. En effet, d'une part, l'intimée avait confirmé que le recourant l'avait forcée à faire "des choses" qu'elle ne voulait pas, en précisant que ses doutes concernaient uniquement des détails. D'autre part, l'hésitation de l'intéressée pouvait s'expliquer par l'écoulement du temps et ne suffisait pas à mettre en cause les déclarations nuancées faites auparavant. L'hypothèse d'une éventuelle confusion de la part de l'intimée ne reposait dès lors sur aucun élément objectif.
1.3.2. Le recourant affirme que l'audition de D._ aurait permis de déterminer si ce dernier avait pu commettre les actes que l'intimée lui avait attribués, voire si un quelconque abus avait réellement existé. On ne voit pas en quoi il aurait été arbitraire, pour la cour cantonale, d'estimer qu'un tel témoignage ne serait pas décisif en l'occurrence. En effet, d'éventuels aveux de la part du prénommé, s'agissant de son comportement envers l'intimée, n'auraient pas exclu la commission, par le recourant, des actes mis à sa charge. Cela vaut à plus forte raison dans la mesure où plusieurs épisodes en relation avec lesquels l'intimée a accusé le recourant ont, selon ce dernier, bien eu lieu.
1.4. Le recourant soutient que la cour cantonale aurait dû diligenter une expertise de crédibilité concernant l'intimée.
1.4.1. Le juge ne doit recourir à une expertise de crédibilité qu'en présence de circonstances particulières. Une expertise de crédibilité effectuée par un spécialiste peut notamment s'imposer s'agissant de déclarations d'un petit enfant qui sont fragmentaires ou difficiles à interpréter, lorsqu'il existe des indices sérieux de troubles psychiques ou encore lorsque des éléments concrets donnent à penser que la personne interrogée a été influencée par un tiers (ATF 129 IV 179 consid. 2.4 p. 184 et les références citées; 128 I 81 consid. 2 p. 84). Le tribunal dispose à cet égard d'un pouvoir d'appréciation (arrêt 6B_145/2019 du 28 août 2019 consid. 2.2.1 et les références citées).
1.4.2. L'autorité précédente a exposé que l'intimée souffrait d'un retard mental qui s'accompagnait d'importantes difficultés d'apprentissage et de compréhension. Si cette affection avait justifié l'institution d'une curatelle de représentation, aucun élément ne laissait craindre qu'elle pût avoir une incidence sur les déclarations de l'intéressée. Au contraire, les dépositions de l'intimée avaient toujours été claires et cohérentes et n'avaient pas compris de contradictions significatives portant sur des éléments importants. Le fait que celle-ci eût, à plusieurs reprises, avoué ne pas se souvenir de certains détails s'expliquait par l'écoulement du temps. Enfin, s'il était établi que C._ s'était trouvé à l'origine de la dénonciation du recourant, rien ne permettait de soupçonner que l'intimée pût être influencée par le prénommé au point d'accuser faussement celui-ci. Le fait que l'intimée et son père eussent admis avoir réalisé que C._ "était un manipulateur" ne signifiait pas encore que l'intéressée eût concrètement été manipulée dans la présente affaire.
1.4.3. En l'occurrence, il est avéré que l'intimée souffre d'un trouble psychique, de sorte qu'une expertise n'était pas nécessaire pour éclaircir cet aspect. Le recourant soutient que celle-ci aurait tenu des propos contradictoires, fragmentaires et incohérents. Il évoque toutefois uniquement, à cet égard, des déclarations portant sur des événements périphériques à l'affaire, soit concernant D._, ou relevant du détail, ainsi la question de savoir si l'intimée avait déjà, à une reprise avant de rencontrer le recourant, pratiqué la sodomie. S'agissant enfin d'une éventuelle manipulation, le recourant se contente de formuler des conjectures, sans évoquer aucun élément concret permettant d'appuyer ses soupçons. Il n'était ainsi pas arbitraire, pour la cour cantonale, de considérer qu'une expertise de crédibilité ne se justifiait pas, nonobstant l'affection dont souffre l'intimée et dont elle a tenu compte dans l'appréciation des preuves (cf. consid. 2.2 infra).
1.5. Le recourant reproche à la cour cantonale de ne pas avoir ordonné une nouvelle expertise psychiatrique, après la réception du rapport des expertes du 29 janvier 2018.
On peut tout d'abord relever que, sur ce point, le recourant adresse diverses critiques à l'expertise psychiatrique en question, en contestant la méthodologie suivie, les compétences des expertes mandatées ou encore leur impartialité, sans formuler aucun grief distinct - répondant aux exigences de motivation découlant de l'art. 42 al. 2 LTF - portant sur l'exploitabilité de ce moyen de preuve. L'intéressé, qui inscrit son argumentation dans le cadre de son grief concernant la prétendue violation de l'art. 389 CPP, ne prétend d'ailleurs pas que l'expertise en question aurait dû être écartée du dossier ou qu'elle n'aurait pas dû être prise en considération par la cour cantonale. Il soutient, alternativement, qu'une nouvelle expertise psychiatrique aurait dû être diligentée, respectivement que le Dr F._ aurait dû se voir auditionné.
Quoi qu'il en soit, le grief du recourant, figurant dans son mémoire de recours adressé au Tribunal fédéral, constitue une reproduction exacte du même grief formulé dans son mémoire d'appel (cf. pièce 170/1 du dossier cantonal, p. 7 ss). L'intéressé ne consacre en revanche pas une ligne à la discussion des motifs figurant dans le jugement attaqué, dans lesquels la cour cantonale a répondu à ses critiques (cf. jugement attaqué, p. 28-31). Cette manière de faire est inadmissible, puisqu'il appartient au recourant d'exposer en quoi l'autorité précédente aurait pu violer le droit (cf. art. 42 al. 2 LTF). L'argumentation du recourant est ainsi de toute manière irrecevable à cet égard.
2.
Le recourant reproche à l'autorité précédente d'avoir apprécié les preuves et établi les faits de manière arbitraire. Il se plaint en outre, à cet égard, d'une violation du principe "in dubio pro reo".
2.1. Le Tribunal fédéral est lié par les faits établis par l'autorité précédente (art. 105 al. 1 LTF), à moins qu'ils n'aient été constatés en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. (ATF 144 III 93 consid. 5.2.2 p. 98). Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire (ATF 145 I 26 consid. 1.3 p. 30; 142 III 364 consid. 2.4 p. 368). L'appréciation des preuves est arbitraire ou manifestement inexacte au sens de l'art. 97 al. 1 LTF lorsqu'elle est en contradiction avec le dossier ou contraire au sens de la justice et de l'équité ou lorsque l'autorité ne tient pas compte, sans raison sérieuse, d'un élément propre à modifier la décision, se trompe sur le sens et la portée de celui-ci ou, se fondant sur les éléments recueillis, en tire des constatations insoutenables (cf. ATF 144 II 281 consid. 3.6.2 p. 287; 137 III 226 consid. 4.2 p. 233 s.). La présomption d'innocence, garantie par les art. 10 CPP, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe "in dubio pro reo", concernent tant le fardeau de la preuve que l'appréciation des preuves au sens large (ATF 144 IV 345 consid. 2.2.3.1 p. 348 s.; 127 I 38 consid. 2a p. 40 s.). En tant que règle sur le fardeau de la preuve, elle signifie, au stade du jugement, que le fardeau de la preuve incombe à l'accusation et que le doute doit profiter au prévenu. Comme règle d'appréciation des preuves (sur la portée et le sens précis de la règle sous cet angle, cf. ATF 144 IV 345 consid. 2.2.3.3 p. 351 s.), la présomption d'innocence signifie que le juge ne doit pas se déclarer convaincu de l'existence d'un fait défavorable à l'accusé si, d'un point de vue objectif, il existe des doutes quant à l'existence de ce fait. Il importe peu qu'il subsiste des doutes seulement abstraits et théoriques, qui sont toujours possibles, une certitude absolue ne pouvant être exigée. Il doit s'agir de doutes sérieux et irréductibles, c'est-à-dire de doutes qui s'imposent à l'esprit en fonction de la situation objective. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe "in dubio pro reo", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (ATF 144 IV 345 consid. 2.2.3.3 p. 351 s.; 143 IV 500 consid. 1.1 p. 503; 138 V 74 consid. 7 p. 82).
2.2. La cour cantonale a exposé que l'intimée avait livré une description claire et constante des actes qu'elle avait reprochés au recourant, cela en utilisant un langage propre à une jeune fille souffrant d'un retard mental, soit en usant de termes simples, parfois très crus. Ce récit avait été nuancé et ne révélait aucun indice d'exagération ou d'animosité excessive, puisque l'intimée avait en particulier toujours admis l'existence de relations sexuelles consenties. Sa crédibilité avait en outre été renforcée par la naïveté déconcertante dont elle avait parfois fait preuve lors des auditions. L'intimée n'avait jamais, lors de ses auditions, paru mélanger à quelque degré que ce fût les comportements reprochés à D._ et ceux imputés au recourant. Le fait que C._ fût à l'origine de la dénonciation pouvait certes s'expliquer par une volonté, chez ce dernier, de nuire au recourant. Cela ne prouvait cependant pas que l'intimée eût été influencée par le prénommé. Aucun indice de manipulation n'avait d'ailleurs pu être décelé dans le récit livré par l'intéressée. Par ailleurs, une partie des accusations formulées par l'intimée contre le recourant avaient pu être corroborées par un enregistrement vidéo. Celui-ci avait révélé l'existence des actes d'urolagnie rapportés par l'intimée. Le recourant avait soutenu que le film en question ne permettait pas d'établir l'existence d'une contrainte. Le visage de l'intimée y révélait pourtant que celle-ci n'était alors aucunement disposée à assouvir le fantasme du recourant. L'intéressée y signifiait en outre clairement son refus, en disant "je n'ai pas envie", en reculant, en secouant la tête, en écartant la main du recourant de sa bouche, en tentant de repousser ce dernier ou encore en lui adressant des regards suppliants afin qu'il s'arrête. Le recourant y profitait quant à lui de l'état de faiblesse de l'intimée, passant outre son refus, insistant verbalement pour qu'elle poursuive, orientant et maintenant sa tête à hauteur de son sexe, ou lui faisant ouvrir la bouche à l'aide de son doigt. L'existence d'une contrainte avait de surcroît été confirmée par les enregistrements extraits du téléphone portable du recourant, lequel s'y moquait de l'intimée, parlait d'elle comme d'une "poubelle", d'un "bocal à sperme" ou prétendait que celle-ci "avait soif" et qu'il lui avait donné "ce qu'il avait à disposition" en urinant dans sa bouche.
Selon la cour cantonale, le recourant avait nié, lors de ses auditions, s'être livré à des pratiques d'urolagnie ou de scatologie, ou encore avoir eu recours à une vidéo. S'agissant de l'épisode qui s'était déroulé sur son balcon, le recourant avait tout d'abord contesté l'existence d'une fellation, puis avait admis que cet acte y avait pris place, en contestant cependant avoir éjaculé sur le visage de l'intimée. Finalement, il avait reconnu qu'il était possible qu'il eût éjaculé et que l'intimée eût avalé son sperme, tout en expliquant que telle n'avait pas été son intention. De la même manière, le recourant avait tout d'abord contesté avoir entretenu des rapports anaux avec l'intimée, avant de se raviser et d'admettre qu'il avait recouru à cette pratique à une occasion, puis finalement à deux reprises, en reconnaissant que cela n'était pas "le kiff" de l'intimée. Concernant les actes d'urolagnie et de scatologie, le recourant, qui savait son téléphone portable entre les mains de la police, était revenu partiellement sur ses premières déclarations au cours de sa deuxième audition. Il avait tout d'abord expliqué avoir uriné sur l'intimée car il n'avait pu se retenir, puis avait modifié sa version des événements en indiquant qu'il avait de la sorte voulu "repousser" celle-ci, afin qu'elle arrêtât de le "bombarder de messages". Finalement, après que les deux amis du recourant eurent rapporté à la police ce qu'ils avaient vu sur les images qui leur avaient été transmises, l'intéressé avait déclaré avoir pratiqué l'urolagnie et la scatologie à la demande de l'intimée. Lors d'une audition ultérieure, le recourant était encore revenu sur ses déclarations et avait expliqué avoir initialement uriné dans la bouche de sa partenaire à défaut de pouvoir se retenir. Ainsi, pour l'autorité précédente, les déclarations du recourant avaient été fluctuantes, contradictoires ou fantaisistes, lorsqu'elles n'avaient pas été directement mises à mal par la vidéo figurant au dossier. Les dénégations de l'intéressé étaient donc dénuées de crédibilité et il convenait de retenir la version des événements décrite par l'intimée.
2.3. L'argumentation du recourant est irrecevable dans la mesure où elle consiste dans une simple reproduction de celle développée dans son mémoire d'appel (cf. pièce 170/1 du dossier cantonal, p. 10-12; cf. consid. 1.5 supra).
Pour le reste, cette argumentation se révèle purement appellatoire et, partant, également irrecevable, puisque le recourant se contente de rediscuter intégralement l'appréciation des preuves à laquelle s'est livrée l'autorité précédente et de substituer sa propre version des événements à celle de la cour cantonale, sans aucunement démontrer en quoi celle-ci serait arbitraire. Au demeurant, les explications du recourant, selon lesquelles l'intimée se serait volontairement adonnée à l'urolagnie et à la scatologie avec lui, tout en ayant par ailleurs formulé des accusations mensongères à son encontre en raison des manipulations de C._, ou, à choix, d'une confusion avec des abus commis sur elle par son ancien compagnon, relèvent de la pure conjecture. Le recourant met pour le reste en avant divers éléments - comme son absence d'antécédents en matière sexuelle, les témoignages favorables de ses anciennes compagnes, l'attitude de l'intimée à la suite des abus subis ou encore le fait que celle-ci eût admis s'être faite, à une occasion, photographier nue par une fillette - qui ne font nullement apparaître comme insoutenable la version des événements retenue par la cour cantonale. Le grief est ainsi irrecevable.
3.
Le recourant prétend que l'autorité précédente aurait violé les art. 181, 189, 190 et 197 al. 4 CP.
Il soutient en particulier que la cour cantonale n'aurait pu le condamner pour contrainte en retenant qu'il avait, par la menace, amené l'intimée à ne pas rapporter l'épisode survenu dans sa salle de bain à ses parents avant le début de la présente procédure.
Déterminer ce qu'une personne a su, voulu, envisagé ou accepté relève du contenu de la pensée, à savoir de faits "internes" qui, en tant que tels, lient le Tribunal fédéral (cf. art. 105 al. 1 LTF), à moins qu'ils n'aient été retenus de manière arbitraire (cf. ATF 141 IV 369 consid. 6.3 p. 375).
L'argumentation du recourant est donc irrecevable dans la mesure où elle consiste à affirmer, de manière purement appellatoire, que l'intimée aurait parlé de l'épisode en question à C._, avant le dépôt de plainte, en sachant que ce dernier en informerait ses parents, cet élément ne ressortant pas de l'état de fait de la cour cantonale.
Pour le surplus, le recourant ne présente aucune argumentation recevable, fondée sur l'état de fait de l'autorité précédente, par lequel le Tribunal fédéral est lié (cf. art. 105 al. 1 LTF) et dont il n'a pas démontré l'arbitraire (cf. consid. 2 supra), propre à démontrer que la cour cantonale aurait pu enfreindre l'une ou l'autre des dispositions précitées.
4.
Le recourant soutient que la cour cantonale aurait violé les art. 197 al. 5 cum 21 CP en le condamnant pour avoir visionné des vidéos pornographiques mettant en scène des actes de violence entre adultes.
Son argumentation est largement irrecevable dans la mesure où elle consiste dans la simple reproduction de celle présentée dans son mémoire d'appel (cf. pièce 170/1 du dossier cantonal, p. 12 s.; cf. consid. 1.5 supra). Pour le reste, la cour cantonale a exclu l'application de l'art. 21 CP concernant les agissements litigieux, en retenant que le recourant avait admis, à l'audience d'appel, avoir su, à l'époque des faits, que les représentations de violence envers les femmes - telles que celles consultées en l'occurrence - étaient prohibées. Or, l'intéressé ne prétend ni ne démontre que cet élément de fait aurait été arbitrairement constaté, de sorte que le grief tiré d'une éventuelle violation des art. 197 al. 5 cum 21 CP est irrecevable.
5.
Le recourant fait grief à l'autorité précédente d'avoir violé l'art. 429 CPP. Dès lors que celui-ci prétend fonder l'indemnité tirée de cette disposition sur un acquittement qu'il n'obtient pas, le grief n'a plus d'objet.
6.
Le recourant reproche à l'autorité précédente la quotité de la peine privative de liberté qui lui a été infligée.
6.1. Aux termes de l'art. 47 CP, le juge fixe la peine d'après la culpabilité de l'auteur. Il prend en considération les antécédents et la situation personnelle de ce dernier ainsi que l'effet de la peine sur son avenir (al. 1). La culpabilité est déterminée par la gravité de la lésion ou de la mise en danger du bien juridique concerné, par le caractère répréhensible de l'acte, par les motivations et les buts de l'auteur et par la mesure dans laquelle celui-ci aurait pu éviter la mise en danger ou la lésion, compte tenu de sa situation personnelle et des circonstances extérieures (al. 2).
Le juge dispose d'un large pouvoir d'appréciation dans la fixation de la peine. Le Tribunal fédéral n'intervient que lorsque l'autorité cantonale a fixé une peine en dehors du cadre légal, si elle s'est fondée sur des critères étrangers à l'art. 47 CP, si des éléments d'appréciation importants n'ont pas été pris en compte ou, enfin, si la peine prononcée est exagérément sévère ou clémente au point de constituer un abus du pouvoir d'appréciation (ATF 144 IV 313 consid. 1.2 p. 319). L'exercice de ce contrôle suppose que le juge exprime, dans sa décision, les éléments essentiels relatifs à l'acte ou à l'auteur dont il tient compte, de manière à ce que l'on puisse constater que tous les aspects pertinents ont été pris en considération et comment ils ont été appréciés, que ce soit dans un sens aggravant ou atténuant (art. 50 CP; ATF 143 IV 313 consid. 1.2 p. 319). Le juge peut passer sous silence les éléments qui, sans abus du pouvoir d'appréciation, lui apparaissent non pertinents ou d'une importance mineure. La motivation doit justifier la peine prononcée, en permettant de suivre le raisonnement adopté. Un recours ne saurait toutefois être admis simplement pour améliorer ou compléter un considérant lorsque la décision rendue apparaît conforme au droit (ATF 144 IV 313 consid. 1.2 p. 319; 136 IV 55 consid. 5.6 p. 61).
6.2. En l'espèce, le recourant reproche tout d'abord à l'autorité précédente de ne pas avoir tenu compte de sa situation personnelle et familiale ainsi que de son parcours scolaire et professionnel. L'autorité précédente n'a pas ignoré ces aspects, mais a indiqué que le parcours de vie et le retard mental de l'intéressé avaient déjà justifié la diminution de sa responsabilité pénale. Ces éléments ont bien été considérés par les expertes (cf. pièce 78 du dossier cantonal, p. 4 ss), le recourant n'expliquant pas, quant à lui, pour quels motifs l'autorité précédente aurait dû leur accorder davantage de poids dans la fixation de la sanction.
Par ailleurs, le recourant se borne à affirmer que la cour cantonale aurait, à tort, refusé de prendre en compte son "bon comportement" en détention. Il ne précise toutefois aucunement en quoi l'autorité précédente aurait violé le droit en estimant que ledit comportement n'avait "pas été exemplaire", puisque l'intéressé peinait à respecter les règles qui lui étaient imposées en détention, avait tendance à discuter les consignes données, gérait mal sa frustration, avait rencontré quelques problèmes avec des codétenus et avait été sanctionné pour consommation de substances prohibées.
En définitive, le recourant ne démontre aucunement que la cour cantonale aurait excédé le large pouvoir d'appréciation dont elle disposait en lui infligeant une peine privative de liberté d'ensemble de quatre ans et demi.
7.
Le recourant soutient enfin que les conditions de détention illicites subies auraient justifié une réduction plus importante de la peine privative de liberté à laquelle il a été condamné.
7.1. L'indemnisation en raison des conditions de détention illicites fait appel au pouvoir d'appréciation du juge; le Tribunal fédéral n'intervient dès lors qu'avec retenue (ATF 142 IV 245 consid. 4.1). L'ampleur de la réparation dépend avant tout de l'appréciation concrète des circonstances particulières de l'espèce, en particulier de la gravité des souffrances physiques ou psychiques consécutives à l'atteinte subie (arrêts 6B_458/2019 du 23 mai 2019 consid. 7.1; 6B_1015/2016 du 27 octobre 2017 consid. 7.2 et les références citées). En matière de réparation, le Tribunal fédéral a admis des réductions de peine correspondant à un tiers, voire à la moitié du nombre de jours d'incarcération dans des conditions illicites. Cela n'empêche pas que l'ampleur de la réparation dépende essentiellement des circonstances concrètes de l'affaire, le Tribunal fédéral n'ayant jamais, en la matière, fixé de ratio strict. En outre, le fait que le Tribunal fédéral eût, dans d'autres affaires, avalisé des réductions proportionnelles d'un tiers ou de la moitié des jours passés dans des conditions de détention illicites ne signifie aucunement que, dans ces cas, une réduction moins importante n'aurait pas été acceptable (cf. arrêt 6B_458/2019 précité consid. 7.3 et les références citées).
7.2. La cour cantonale a exposé que le recourant avait été détenu à la prison G._ depuis le 28 juin 2017. Par ordonnance du 26 mars 2019, le Tribunal des mesures de contrainte vaudois avait constaté que les conditions dans lesquelles s'était déroulée la détention de l'intéressé n'avaient pas été conformes aux exigences légales en la matière. Le recourant avait successivement été détenu dans des cellules correspondant - après déduction de la place occupée par les sanitaires - à une surface individuelle de 3,7 m2, de 5,23 m2, de 5 m2, de 4 m2et de 3,94 m2, de sorte que le minimum de 4 m2 n'avait pas été respecté s'agissant de deux des cellules, dans lesquelles l'intéressé avait séjourné du 28 juin au 6 juillet 2017. La situation avait été aggravée par le fait, d'une part, que les toilettes fussent séparées du reste de la cellule par un rideau ignifuge et non par des cloisons et, d'autre part, que l'isolation thermique du bâtiment était insuffisante et devait être renforcée afin d'offrir une température acceptable dans les cellules. Le confinement en cellule du recourant, à raison de 21 à 23 heures par jour, devait également être considéré. Le recourant avait eu la possibilité de travailler à 100% à l'atelier cuisine dès le 24 octobre 2017 mais, après avoir décliné plusieurs propositions à cet égard, n'avait débuté cette activité que le 6 février 2019.
Ainsi, selon l'autorité précédente, la période durant laquelle le recourant avait été confiné en cellule, soit du 28 juin au 23 octobre 2017 - date à laquelle l'intéressé avait eu la possibilité de travailler hors de sa cellule -, devait entraîner une réduction de la peine à raison d'un jour pour trois jours de détention subis dans ces conditions. A partir du 24 octobre 2017, le recourant avait eu la possibilité d'élargir son régime de détention, mais avait décliné les propositions qui lui étaient faites en prétextant vouloir se concentrer sur sa défense et sur son expertise psychiatrique, si bien que le confinement avait dès lors résulté de son propre choix. Depuis le 24 octobre 2017 et jusqu'à la date du jugement d'appel - soit pour 569 jours - il y avait donc lieu de réduire la peine du recourant à raison d'un jour pour quatre jours de détention subis dans les conditions qui existaient alors. Par ailleurs, sur la durée de son séjour effectué à la prison G._, le recourant n'avait en définitive passé qu'une dizaine de jours dans des cellules dont la surface n'était pas suffisante. Il n'avait, pour le reste, pas prétendu ni démontré avoir subi des souffrances particulières sur le plan physique ou psychique en raison des conditions de détention.
Outre les jours déduits de la peine privative de liberté en raison de la détention à la prison G._, la cour cantonale a réduit cette sanction de 14 jours, afin de compenser les 27 jours passés par le recourant dans les locaux de la police dans des conditions illicites (cf. à cet égard le jugement du 18 janvier 2019, p. 59).
7.3. Le recourant relève tout d'abord que la cour cantonale n'a pas précisé, dans le jugement attaqué, pour quels motifs les conditions de sa détention à la prison G._ auraient été "moins difficiles" que celles ayant prévalu dans les locaux de la police. On ne perçoit pas la pertinence de cette remarque, dès lors que la déduction des jours de détention relative au séjour dans les locaux de la police n'était plus litigieuse au stade de l'appel et que l'autorité précédente ne s'est - en conséquence - penchée que sur les conditions concrètes de détention à la prison G._.
7.4. Le recourant affirme ensuite que la réduction opérée en raison de son séjour à la prison G._ aurait dû être supérieure à celle admise dans un jugement de la cour cantonale du 22 janvier 2019, dans lequel il avait été retenu que les conditions de détention n'avaient pas été "totalement illicites". On voit pourtant mal qu'une telle appréciation, figurant dans une décision cantonale, puisse d'une quelconque manière lier le Tribunal fédéral dans son examen de la bonne application du droit fédéral. Au demeurant, dans l'arrêt du 23 mai 2019 ayant fait suite à ce jugement, le Tribunal fédéral a examiné la réduction opérée en considérant que les conditions de détention à la prison G._ avaient été illicites (cf. arrêt 6B_458/2019 précité consid. 7.2).
7.5. Enfin, le recourant conteste que son refus provisoire de travailler - et donc d'éviter un confinement presque ininterrompu en cellule - eût justifié, dans les proportions retenues par la cour cantonale, une réduction moins importante de sa peine à titre de réparation.
7.5.1. La jurisprudence a déjà eu l'occasion de rappeler qu'un travail ne pouvait être imposé au prévenu durant sa détention provisoire et que le refus, par ce dernier, d'une place de travail susceptible d'entraîner un confinement moins important et d'atténuer ainsi les effets d'une cellule à la surface insuffisante - respectivement d'entraîner son déplacement dans une cellule répondant aux exigences en matière de surface - ne rendait pas conforme à l'art. 3 CEDH des conditions de détention en soi illicites (cf. arrêts 6B_71/2016 du 5 avril 2017 consid. 6.3.1; 6B_946/2015 du 13 septembre 2016 consid. 3.4.3; 6B_1057/2015 du 25 mai 2016 consid. 5.2).
7.5.2. En l'occurrence, la cour cantonale n'a pas nié que les conditions de détention du recourant fussent illicites durant la période où ce dernier a refusé de travailler. Elle a en revanche considéré, sous l'angle de la problématique du confinement, que le recourant aurait eu l'occasion de faire cesser celui-ci en travaillant, étant rappelé que ce dernier occupait alors une cellule dont la surface individuelle n'était pas inférieure à 4 m2. Ainsi, cet élément pouvait, à bon droit, être pris en compte dans la fixation du nombre de jours devant, pour la période concernée, être porté en déduction de la peine privative de liberté.
La cour cantonale n'a donc pas excédé son pouvoir d'appréciation en estimant que, si la détention dans des conditions illicites devait donner lieu à une réduction de la peine privative de liberté à hauteur d'un jour pour trois jours dans lesdites conditions lorsque le recourant avait subi un confinement en cellule, cette réduction devait être moindre s'agissant d'une période où celui-ci était volontairement demeuré confiné, ce qu'il n'aurait pas fait s'il avait, à cet égard, rencontré une souffrance particulière.
7.6. En définitive, le recourant ne démontre pas que l'autorité précédente aurait violé le droit fédéral en réduisant comme elle l'a fait sa peine privative de liberté eu égard à la détention subie dans des conditions illicites. Le grief doit être rejeté.
8.
Le recours doit être rejeté dans la mesure où il est recevable. Comme il était dénué de chances de succès, la demande d'assistance judiciaire doit être rejetée (art. 64 al. 1 LTF). Le recourant, qui succombe, supportera les frais judiciaires (art. 66 al. 1 LTF), dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable (art. 65 al. 2 LTF). L'intimée, qui n'a pas été invitée à se déterminer, ne saurait prétendre à des dépens.
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 17 septembre 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa